列式数据库总结(特点)

简单罗列了一些选择行数据库还是列数据库的权衡依据。当然,如果能够把数据全放在内存中,那么使用内存数据库性能会更好。

  1. 在只需要根据某几列来聚合数据的时候按列的数据组织方式更有效。因为这样只需要读取一部分数据,要比读取全部数据更快.
  2. 当只需要修改某一列值的时候按列的数据组织方式更有效。因为可以直接找到某列数据并修改,而与行中的其他列无关。
  3. 当需要某行的多列数据的时候按行的数据组织方式更有效。当行中数据不是太多的情况下一次硬盘寻址就可以获得该行的所有数据。
  4. 在新增行数据的时候,如果各列都有值,那么按行的数据组织方式会更有效,因为只需要一次硬盘寻址就可以写入整行的全部数据.

一般来说, 侧重于联机事务处理 (OLTP) 的系统更适用行数据库, 频繁交互事务的场景;而侧重于联机分析处理olap的系统就必须在行数据库和列数据库中找到适当得平衡。

 

 

数据库行列转置作成索引,列式数据库已经实现。

列式数据库,以列相关存储架构进行数据存储的数据库,主要适合与批量数据处理即席查询(即席查询是由用户自定义查询条件的)相对应的行式数据库常用于联机事务型数据处理。

行式数据库把一行中的数据值串在一起存储起来,然后再存储下一行的数据,以此类推。

1,Smith,Joe,40000;2,Jones,Mary,50000;3,Johnson,Cathy,44000;

列式数据库把一列中的数据值串在一起存储起来,然后再存储下一列的数据,以此类推。

1,2,3;Smith,Jones,Johnson;Joe,Mary,Cathy;40000,50000,44000; 这是一个简化的说法。

 

 

优势:

不读无效数据:列存储,不需要像行存数据库一样,将整行数据取出,只取出需要的列。磁盘 I/0 是行存储的 1/10或更少,查询响应时间提高 10 倍以上。

高压缩比:压缩比可以达到 5 ~ 20 倍以上,数据占有空间降低到传统数据库的1/10 ,节省了存储设备的开销。

 

GBase 8a 分析型数据库的独特列存储格式,对每列数据再细分为“数据包”。这样可以达到很高的可扩展性:无论一个表有多大,数据库只操作相关的数据包,性能不会随着数据量的增加而下降。通过以数据包为单位进行 I/O 操作提升数据吞吐量,从而进一步提高I/O效率。数据按列包存储,每个数据包内都是同构数据,内容相关性很高,这使得GBase 8a 更易于实现压缩,压缩比通常能够达到 1:10 甚至更优。

同时在磁盘 I/O 和 Cache I/O 上都提升数据库的性能根据数据的不同特性以及不同的分布状况,自动采用相应的压缩算法,如:

行程编码(适用于大量连续重复的数据,特别是排序数据);

基于数据的差值编码(适用于重复率低,但彼此差值较小的数据列);

基于位置的差值编码(适用于重复率高,但分布比较随机的数据列)。

 

原文地址:https://www.cnblogs.com/cl1024cl/p/6205486.html