剑客
关注科技互联网

相同的列式(数据库),不同的存储

在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/

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址