2025年列式存储与行式存储

列式存储与行式存储以前不是特别明白列式存储和行式存储到底有什么区别 对于突然蹦出来的 BigTable HBase Cassandra 这些 NoSQL 数据库凭什么比 MySQL 集群 Oracle 在分析存储上的强大 思来可以这样说说 A 存储 传统 RDBMS 以行单位做数据存储 字段为空则赋值为 NULL

大家好,我是讯享网,很高兴认识大家。

  以前不是特别明白列式存储和行式存储到底有什么区别,对于突然蹦出来的BigTable、HBase、Cassandra这些NoSQL数据库凭什么比MySQL集群,Oracle在分析存储上的强大?思来可以这样说说。

     A. 存储

     传统RDBMS以行单位做数据存储(字段为空则赋值为‘NULL'),列式存储数据库以列为单位做数据存储。如下:


讯享网

对于列式存储来说,一行数据包含一个列或者多个列,每个列一单独一个cell来存储数据。而行式存储,则是把一行数据作为一个整体来存储。

     另外一个不得不提的是,列式存储天生就是适合压缩,因为同一列里面的数据类型基本是相同,笔者在之前使用普通的gzip压缩,200MB的字符串数据,经过压缩之后只剩下8MB。当然gzip并不属于增量压缩,我们可以选择增量压缩的方式来满足一些数据的随机查找。

      B.  查询

      从查询来说,行式存储比较适合随机查询,并且RDBMS大多提供二级索引,在整行数据的读取上,要优于列式存储。但是,行式存储不适合扫描,这意味着要查询一个范围的数据,行式存储需要扫描整个表(因为这些记录不是顺序存储的),在索引建立不当的情况下,查询大表(千万数据)简直是噩梦。

      列式存储,最早接触的可能不是所谓的BigTable,大多数以前的数据仓库都是采用列式存储。列式存储一般行KEY,列KEY(不是列值)都是顺序存储,比如我要查询一个时间段里面,某个值的出现频率,我可能只需要涉及到两个列。

在分析上,列式存储要优于行式存储,列式存储的数据库一般情况下也强烈建议用户按需查找,而不是整行数据去获取。列式存储在这方面减少了IO的压力

      C. 结语

     没有说谁比谁更优,在正真实战的情况,考虑实际情况。比如传统的RDBMS提供ACID原子操作和事务,在大多数列式存储数据库上是不具备的,大多数列式存储数据库对分布式支持友好。

      需要知道的是,列式存储以及行式存储在查询和存储上的本质,在技术选型上多点筹码。

什么是列式数据库?列式数据库是以列相关存储架构进行数据存储的数据库。卢东明认为数据库发展已经到了一个新阶段,数据库市场需要细分,行式数据库不再满足所有的需求,而有很多需求需要通过内存数据库和列式数据库解决,列式数据库在数据分析、海量存储、BI这三个领域有自己独到。


小讯
上一篇 2025-03-29 14:23
下一篇 2025-01-23 21:15

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/33455.html