数据库对比、类比
关系型数据库、NoSQL
关系型数据库
表与表之间有关系。表存储一些格式化的数据结构,每个元组字段的组成都一样,这样便于表之间的联结操作。不过也限制了其性能瓶颈。
更支持SQL,支持复杂计算
NoSQL
表与表之间没有直接关系,创建不用遵循三范式,以键值对存储,结构不固定,可以减少一些空间和时间上的开销。
NoSQL用于指定那些非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统。
不太支持复杂计算。
一般不用做分析使用。
对比项 | NoSQL | 关系型数据库 |
---|---|---|
大表效率 | 高 | 低 |
成本 | 低 | 高 |
事务 | 不支持 | 支持 |
查询方式 | 非结构化查询 | 结构化查询 |
存储扩展 | 横向扩展,分布式 | 纵向扩展(横向有限) |
存储规范 | 可以冗余 | 规范性,避免重复 |
存储格式 | 文档、键值对 | 表格式的行和列 |
复杂SQL,多表关联 | 不行 | 可 |
行列数据库
行数据库按行存,列数据库按列存。
行数据库插入快,列数据库插入慢。
行数据库全表扫描,列数据库扫描区域很小。
对于聚合操作来说,列式数据库更快。
类别 | 行存储 | 列存储 |
---|---|---|
写入 | 写入一次性完成,保证数据完整性 | 一行记录拆成单列保存,写入次数多 |
数据修改写入方便 | 不轻易做数据修改写入操作 | |
适用于关系型数据库 | 适用于分析型数据库 | |
读取 | 将整行数据读取,如果只需要部分列,就会产生冗余列,会有消除冗余列的操作 | 读取的时候只读需要的列,不存在冗余性问题 |
同一行数据类型一般不同,解析时需要切换多种数据类型,消耗CPU增加解析时间 | 针对某列数据,数据类型相同,读取时不需要频繁切换数据类型 | |
按行压缩,当一行有多个字段,每个字段对应的数据类型可能不一致,压缩性能比较差 | 按列压缩,每一列对应相同的数据类型 |
HBase
- HBase是列式NoSQL数据库,可以海量存储,但是不适合分析。
- 可以作为数仓的维表使用,只需按主键查询即可。
ClickHouse
- ClickHouse是列式关系型数据库,既有列式数据库适合聚合操作的优点,又有关系型数据库的完备SQL特性。
- 由于其彪悍的单表性能,所以将实时数据提前关联成宽表交给其处理,可以保证数据的时效性。
参考
原创文章,作者:745907710,如若转载,请注明出处:https://blog.ytso.com/276874.html