NoSQL,关系型数据库,行列数据库对比、类比
数据库对比、类比
关系型数据库、NoSQL
关系型数据库
表与表之间有关系。表存储一些格式化的数据结构,每个元组字段的组成都一样,这样便于表之间的联结操作。不过也限制了其性能瓶颈。
更支持SQL,支持复杂计算
NoSQL
表与表之间没有直接关系,创建不用遵循三范式,以键值对存储,结构不固定,可以减少一些空间和时间上的开销。
NoSQL用于指定那些非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统。
不太支持复杂计算。
一般不用做分析使用。
对比项 | NoSQL | 关系型数据库 |
---|---|---|
大表效率 | 高 | 低 |
成本 | 低 | 高 |
事务 | 不支持 | 支持 |
查询方式 | 非结构化查询 | 结构化查询 |
存储扩展 | 横向扩展,分布式 | 纵向扩展(横向有限) |
存储规范 | 可以冗余 | 规范性,避免重复 |
存储格式 | 文档、键值对 | 表格式的行和列 |
复杂SQL,多表关联 | 不行 | 可 |
行列数据库
行数据库按行存,列数据库按列存。
行数据库插入快,列数据库插入慢。
行数据库全表扫描,列数据库扫描区域很小。
对于聚合操作来说,列式数据库更快。
类别 | 行存储 | 列存储 |
---|---|---|
写入 | 写入一次性完成,保证数据完整性 | 一行记录拆成单列保存,写入次数多 |
数据修改写入方便 | 不轻易做数据修改写入操作 | |
适用于关系型数据库 | 适用于分析型数据库 | |
读取 | 将整行数据读取,如果只需要部分列,就会产生冗余列,会有消除冗余列的操作 | 读取的时候只读需要的列,不存在冗余性问题 |
同一行数据类型一般不同,解析时需要切换多种数据类型,消耗CPU增加解析时间 | 针对某列数据,数据类型相同,读取时不需要频繁切换数据类型 | |
按行压缩,当一行有多个字段,每个字段对应的数据类型可能不一致,压缩性能比较差 | 按列压缩,每一列对应相同的数据类型 |
HBase
- HBase是列式NoSQL数据库,可以海量存储,但是不适合分析。
- 可以作为数仓的维表使用,只需按主键查询即可。
ClickHouse
- ClickHouse是列式关系型数据库,既有列式数据库适合聚合操作的优点,又有关系型数据库的完备SQL特性。
- 由于其彪悍的单表性能,所以将实时数据提前关联成宽表交给其处理,可以保证数据的时效性。
参考
NoSQL,关系型数据库,行列数据库对比、类比的更多相关文章
- 通过读取excel数据和mysql数据库数据做对比(二)-代码编写测试
通过上一步,环境已搭建好了. 下面开始实战, 首先,编写链接mysql的函数conn_sql.py import pymysql def sql_conn(u,pwd,h,db): conn=pymy ...
- 数据库行列转换sql
经常折腾数据库,常常遇到数据库行列转换的问题,下面就用一个小例子来演示下如何进行行列转换. 1.创建一张表 CREATE TABLE [android_source]( [CREATETIME] [d ...
- 【转】SQL Server、Oracle、MySQL和Vertica数据库常用函数对比
SQL Server.Oracle.MySQL和Vertica数据库常用函数对比 Vertica数据库是HP公司新收购的用于BI方面的数据库. 1. 绝对值 S:select abs(-1) valu ...
- 提高MSSQL数据库性能(1)对比count(*) 和 替代count(*)
原文:提高MSSQL数据库性能(1)对比count(*) 和 替代count(*) 文章准备的数据库: Atricles 表 数据量60690000条数据 ArticleID 主键自增列+自动建立 ...
- Vertica的这些事(二)——SQL-Server、Oracle、MySQL和Vertica数据库常用函数对比
SQL Server.Oracle.MySQL和Vertica数据库常用函数对比 Vertica数据库是HP公司新收购的用于BI方面的数据库. 绝对值 S:select abs(-1) value O ...
- Python与数据库[0] -> 数据库概述
数据库概述 / Database Overview 1 关于SQL / About SQL 构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一 ...
- 数据库(数据库、表及表数据、SQL语句)
数据库MYSQL 今日内容介绍 u MySQL数据库 u SQL语句 第1章 数据库 1.1 数据库概述 l 什么是数据库 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储 ...
- day40——数据库、数据库分类、安装、修改密码、字符集编码、简单语句介绍
day40 详情请看:https://www.cnblogs.com/clschao/articles/9907529.html 数据库 数据库 简而言之可视为电子化的文件柜--存储电子文件的处所,用 ...
- DB-概念-数据库:数据库/Database
ylbtech-DB-概念-数据库:数据库/Database 数据库是以一定方式储存在一起.能与多个用户共享.具有尽可能小的冗余度.与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的 ...
随机推荐
- ThinkPHP V6.0.12在php8.1下验证码出现问题
一.问题描述 1.项目需求要求使用PHP8.1.*版本 2.运行程序发现验证码不生效报错如下: 二.错误描述 1.报错信息得出:从浮点(数字)到整数的隐式转换将失去精度 三.解决流程 1.找到报错文件 ...
- netty系列之:netty中常用的xml编码解码器
目录 简介 XmlFrameDecoder XmlDecoder 总结 简介 在json之前,xml是最常用的数据传输格式,虽然xml的冗余数据有点多,但是xml的结构简单清晰,至今仍然运用在程序中的 ...
- 709. To Lower Case - LeetCode
Question 709. To Lower Case Sollution 题目大意:字符串大写转小写 思路: 直接调用Java API函数 字符串转char数组,遍历数组,判断如果大写就转小写 Ja ...
- 438. Find All Anagrams in a String - LeetCode
Question 438. Find All Anagrams in a String Solution 题目大意:给两个字符串,s和p,求p在s中出现的位置,p串中的字符无序,ab=ba 思路:起初 ...
- Android开发“HelloWorld”项目
运行截图; 注:在activity_hello_world.xml文件中·可以改变显示内容,如图: 运行截图;
- 浅析kubernetes中client-go Informer
之前了解了client-go中的架构设计,也就是 tools/cache 下面的一些概念,那么下面将对informer进行分析 Controller 在client-go informer架构中存在一 ...
- ASP.NET MVC 处理管线模型
MVC管道整体处理模型 1.在ASP.NET MVC处理管线中的第一站就是路由模块.当请求到达路由模块后,MVC框架就会根据Route Table中配置的路由模板来匹配当前请求以获得对应的contro ...
- JAVA - 如果hashMap的key是一个自定义的类,怎么办?
JAVA - 如果hashMap的key是一个自定义的类,怎么办? 使用HashMap,如果key是自定义的类,就必须重写hashcode()和equals().
- CabloyJS部署了一套演示站点
为了方便大家快速体验和了解CabloyJS的风格和特性,全新部署了一套演示站点.对于初次接触CabloyJS的开发者,不用下载新建项目,就可以直接体验CabloyJS了 在线演示 场景 链接/二维码 ...
- Dubbo的基本使用
Dubbo分为提供者和消费方 并且两者都要注册到ZK上 提供者 注解 @Service 这是dubbo包下的 消费组 注解 @Reference 远程注入 第一步导入依赖 <! ...