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 数据库是以一定方式储存在一起.能与多个用户共享.具有尽可能小的冗余度.与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的 ...
随机推荐
- 【Python数据分析案例】python数据分析老番茄B站数据(pandas常用基础数据分析代码)
一.爬取老番茄B站数据 前几天开发了一个python爬虫脚本,成功爬取了B站李子柒的视频数据,共142个视频,17个字段,含: 视频标题,视频地址,视频上传时间,视频时长,是否合作视频,视频分区,弹幕 ...
- CentOS下安装与配置Maven
安装Maven 当前系统 [root@141 ~]# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) 下载 http://ma ...
- 好客租房5-React脚手架的应用
3.1react脚手架意义 1脚手架是开发现代web应用的必备 2充分利用webpack babel eslint等工具进行使用 3零配置 4关注业务即可 3.2使用react脚手架初始化项目 1初始 ...
- PKUSC2022 游记
PKUSC2022 游记 Day1 上午随便看了点题,感觉没看什么题就开考了. 开考之后先看 T1,发现 T1 好像不是那么简单. T1 : 九条可怜有两个账号,她每次都会打 \(\rm rating ...
- ConfigurationManager姿势快闪
C# ConfigurationManager使用记录 最近一个祖传代码是使用.NET Fx写就的,我在使用控制台程序获取配置时有些折腾. 下面记录一些管理配置文件的姿势: Configuration ...
- Python with语句和上下文管理器
open("FishC.txt","w")#此处需注意如果被打开的文件中,已有内容,那么用w的方式打开,则会导致原文件内容被截断,也就是相当于被清空了,然后重新 ...
- 设置C#启动进程但不显示命令行窗口
设置一下Process类型相关的配置属性即可,直接上代码. //记得引入命名空间 //using System.Diagnostics; //获得当前环境的基路径 string basePath = ...
- Java-调用R语言和调用Python(前后端展示)
1. 背景 R语言和Python用于数据分析和数据处理,并生成相应的直方图和散点图 需要实现一个展示平台,后端使用Java,分别调用R语言和调用Python,并返回数据和图给前端显示 这个平台主要实现 ...
- 26.MySQL数据库基础
MySQL数据库基础 目录 MySQL数据库基础 数据库的概念 数据 表 数据库 数据库的管理系(DBMS) 数据库系统 访问数据库的流程 数据库系统发展史 当今主流数据库介绍 关系数据库 关系数据库 ...
- 使用html2canvas,由html转换canvas时,出现图片丢失问题解决方案
在img标签上加上crossorigin="anonymous":如果是图片地址是跨域网址,请将图片转换为base64格式: 源码如下: <!DOCTYPE html> ...