本文主要是介绍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: <col_x, x1>, <col_z, z1>, <col_w, w_0>
row2: <col_y, y2>
row3: <col_x, x2>
一个特殊的概念是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
这篇关于wide-column store的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!