wide-column store

Wide-column store是概念上Column有无穷多的column。每一行可以有不同的column,相当于一个无限多column的table,每个行有很多的NULL value (空格),所以像个sparse table。是可以无schema限制,自由扩展的。享受了schema-free的好处。

又有一个名词叫paritioned row store. 把这些ROW打散到不同的节点上。So called wide column就reflect了这个分布式特性。

为了支持这个无限column,每一行的每个column必须要带着column的名字。所以,有人说wide column store就是一个二维的KV store。

row1: , ,
row2:
row3:

一个特殊的概念是column family. 比如course column family,就有attributes course:name, and course:time.
每个column family物理上是存在一个file里面的。

Column family和relational table之间的不同就在于column family能够不断的加column。Wide column store就是用KV store来包装成NoSQL数据库,提供一些简单的SQL服务。Tradeoff 一些功能比如Join,来提供schema的灵活性。

https://www.dbrnd.com/2016/05/nosql-create-your-first-cassandra-column-family-table/

注意这个和columnar DB,columnar format,有本质不同。那个是有schema的,只是把column的数据物理存放在一起,便于SELECT。

著名的wide column store有Big table,以及它的open source版本HBASE,Cassandra,Azue CosmosDB。

Big table不支持传统数据库这种的Join以及复杂的SQL操作。HBASE也不支持。

HBASE支持多版本的数据。
create ‘sample’, {NAME=>‘family’, version=>8}
put ‘sample’, ‘row1’, ‘family:c1’, ‘sample_value1’, 3
put ‘sample’, ‘row1’, ‘family:c1’, ‘sample_value2’, 4

你可能感兴趣的:(Database)