民间,
最近我正在阅读一些NOSQL列导向存储的博客。我正在尝试使用CASSANDRA和HBASE。
我所理解的是数据以列为导向的方式存储。
e.g。员工ID,员工姓名,姓氏
100 , 'abc', 'xyz'
200 , 'ABC' , 'XYZ'
然后,数据将以磁盘上的以下格式存储(面向列的存储单列)
First column Second column Third Column
100|200 , 'abc'|'ABC' , 'xyz'|'XYZ'
1)我想知道我们是否必须使用id = 100来检索单个raw如何完成?由于数据不连续,成本会很高吗? (是否所有索引都包含所有列的原始密钥)
2)为什么HBASE cassandra没有正确的聚合功能支持,因为面向列的存储是为了那个?
答案 0 :(得分:2)
简单的答案 - HBase和Cassandra不是面向列的,它们是面向行的。然而,与传统数据库的不同之处在于,每一行实际上是PK的一个键/值对和一个任意数量的列。
面向列的数据库例如是vertica和terra数据。
然而,从面向列的存储中检索完整行比从面向行的DB更加省略,这是正确的。但是,面向列的DBMS被用于分析,您通常希望在所有数据上聚合几列,而面向行则用于从仅一小部分数据中检索(几乎)完整行。