[Cassandra教程](十三)相同的列式(数据库),不同的存储

2016年10月30日 17204点热度 8人点赞 2条评论

在NoSQL之中,一种很重要的数据库,叫做列式数据库。

下面是百度百科的解释:

列式数据库是以列相关存储架构进行数据存储的数据库,主要适合于批量数据处理和即时查询。相对应的是行式数据库,数据以行相关的存储体系架构进行空间分配,主要适合于小批量的数据处理,常用于联机事务型数据处理。

 

本文主要想补充说明的是,列式数据库的存储其实也不完全一样的!

一个典型的例子就是HBase 与 Cassandra

但是他们的最小存储单元都是Column(列),并且上层都是列簇,这个是一样的。不一样的地方在于,他们是如何管理、存储列簇的。

HBase:

HBase 会把一行的所有列遍布集群之中的所有节点。 当我们通过row key 查找数据的时候,每个节点都会返回这一行的一部分。

Cassandra:

同一行只会存储在一个节点!通过row key (partition key) 查找某一行数据的时候,只会到某一个节点上进行。

 

可以说,Cassandra的最小存储单元只是列,但是基本上还是行的概念。 这种处理方式,在行不是非常非常长的时候,效率还是要高于HBase。 但是当某一行特别长的时候,HBase的优势就显示出来了:

某一行可以特别特别长,但是因为是整个集群一起在抗,所以能处理更长的数据。HBase的宽列能力,更宽一些:)

但是笔者并不认为Cassandra在宽列能力上会比较弱,根据官方文档,长度最长能到20亿个列。 这个可能也是Map结构限制了吧。

本文为原创文章,转载请注明出处
原文链接:http://www.flyml.net/2016/10/30/some-comments-on-column-family-database/

RangerWolf

保持饥渴的专注,追求最佳的品质

文章评论

  • Nonsense

    单机测过列数对Cassandra性能的影响,相同情况下,百万行数据,从10列到20列,就会有明显的性能下降。

    2018年02月23日
    • rangerwolf

      感谢测试数据!

      2018年03月05日