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 数据库是以一定方式储存在一起.能与多个用户共享.具有尽可能小的冗余度.与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的 ...
随机推荐
- victoriaMetrics无法获取抓取target的问题
victoriaMetrics无法获取抓取target的问题 问题描述 最近在新环境中部署了一个服务,其暴露的指标路径为:10299/metrics,配置文件如下(名称字段有修改): apiVersi ...
- Linux磁盘和文件系统知识总结
硬盘操作 为什么要给硬盘分区? 如果你需要在一块硬盘上用到多个文件系统,那么你就需要对硬盘进行分区,以便用不同的分区支持不同的文件系统.(但一个硬盘只能有一个分区表!)反过来说,如果你整块硬盘都用同样 ...
- Web Api源码(路由注册)
这篇文章只是我学习Web API框架的输出,学习方法还是输出倒逼输入比较行得通,所以不管写的好不好,坚持下去,肯定有收获.篇幅比较长,仔细思考阅读下来大约需要几分钟. 做.NET开发有好几年时间了,从 ...
- 【FAQ】申请华为运动健康服务授权的4个常见问题及解决方法
华为运动健康服务(HUAWEI Health Kit)提供原子化数据开放,在获取用户对数据的授权后,应用可通过接口访问运动健康数据,对用户数据进行增.删.改.查等操作,为用户提供运动健康类数据服务.这 ...
- PCIe引脚PRSNT与热插拔
热插拔的基本目的是要让PCIe设备按照规定的顺序.原则,从系统中移除或插入到系统中来,并能正常的工作,且不影响系统的正常运行.事实上,PCIe"热插拔"的关键目的就是为前面面所提到 ...
- 【Azure Developer】使用Azure PubSub服务示例代码时候遇见了.NET 6.0的代码转换问题
问题描述 当本地环境中安装.NET 6.0后,用指令 dotnet new web 或 dotnet new console 生成的项目,使用的都是新模板生成的Program.cs文件.里面去掉了n ...
- 2.0 vue2+tinymce实现图片上传与回显
1.效果 2.配置 2.1 在init中添加图片上传函数 // 图片上传 images_upload_handler: (blobInfo, success, failure) => { // ...
- 791. Custom Sort String - LeetCode
Question 791. Custom Sort String Solution 题目大意:给你字符的顺序,让你排序另一个字符串. 思路: 输入参数如下: S = "cba" T ...
- vue 的个人学习小笔记
一.vite2.0+vue3.0+ts 创建.配置 个人公众号文章地址 个人github仓库地址 1.Vite 创建 vue3 项目: 1.1.npm 常用命令 1.npm 查看版本号 npm vie ...
- README.exe 是的,你看错是EXE
SmartIDE让你的README变成可执行文档,再也不用编写无用的文档,再也不必操心环境问题. 作为开发者,拿到一个新的代码库的时候一般都会先去看README文件,通过这个文件可以知道这套代码所 ...