Cassandra 面向列的数据库相关

Cassandra 面向列的数据库相关,cassandra,hbase,nosql-aggregation,nosql,Cassandra,Hbase,Nosql Aggregation,Nosql,各位 我现在已经开始阅读NOSQL相关的数据库,因为我目前正在开发数据库仓库相关的应用程序 我有以下问题。我已经读过基础知识了 问题1当具有相同列的数据存储在一起时,如何在面向列的数据库中检索整个raw 假设我们以以下格式存储数据,所以在内部,它将像这样存储在面向列的数据库中 测试|一起测试1,一起测试5 | 10 键1:{name:test,value:5} 键2:{name:test1,value:10} 那么,如果我们必须检索key1的数据,它是如何发生的呢?A和B是我的猜测 A如果必须分

各位

我现在已经开始阅读NOSQL相关的数据库,因为我目前正在开发数据库仓库相关的应用程序

我有以下问题。我已经读过基础知识了

问题1当具有相同列的数据存储在一起时,如何在面向列的数据库中检索整个raw

假设我们以以下格式存储数据,所以在内部,它将像这样存储在面向列的数据库中

测试|一起测试1,一起测试5 | 10

键1:{name:test,value:5} 键2:{name:test1,value:10}

那么,如果我们必须检索key1的数据,它是如何发生的呢?A和B是我的猜测

A如果必须分别从每个列存储中提取数据,那么成本将非常高

B是否有任何索引机制来获取给定原始密钥的所有列的数据

问题2

我阅读了一些文档,发现面向列的数据库更适合在单个列上运行聚合函数,因为I/O将更少

在面向NOSQL列的存储(如cassandra和HBASE)中,我没有找到对聚合函数(如SUM、AVG等)的适当支持。可能会有一些调整/黑客攻击/更多的代码编写,如下所示

问题3在面向列的数据库中,连接是如何在内部发生的?建议这样做吗?

好问题, 1在Cassandra中,如果您使用的是cqlsh,那么它看起来就像您在mysql或其他一些rdbms存储中存储数据一样

Connected to Test Cluster at localhost:9160.
[cqlsh 3.1.7 | Cassandra 1.2.9 | CQL spec 3.0.0 | Thrift protocol 19.36.0]
Use HELP for help.
cqlsh> create keyspace test with replication={'class':'SimpleStrategy', 'replication_factor': 1
         <value>  
cqlsh> create keyspace test with replication={'class':'SimpleStrategy', replication_factor': 1};
cqlsh> USE test ;
cqlsh:test> create table entry(key text PRIMARY KEY, name text, value int );
cqlsh:test> INSERT INTO entry (key, name , value ) VALUES ( 'key1', 'test',5);
cqlsh:test> INSERT INTO entry (key, name , value ) VALUES ( 'key2', 'test1',10);
cqlsh:test> select * from entry;

 key  | name  | value
------+-------+-------
 key1 |  test |     5
 key2 | test1 |    10
注意:-您可以使用键或任何列值选择每一行,这非常简单

2是的,nosqls还仅支持DML的批处理操作

nosqls数据存储中均不支持3个联接。它们不是用来连接的


希望它能对您有所帮助。

亲爱的kkmishra,我想在您的笔记中了解一下下面的内容。基本上,我正在尝试了解NOSQL的内部结构,以决定是否将其用于我们的新应用程序。注意:-您可以使用键或使用辅助索引在其他列上使用某些条件来选择行。1如何在NOSQL中检索single raw我相信它必须检查不同的磁盘块才能检索singleraw,并且它不是连续的。有没有像columnArray['rawKey']=columnValue 2这样的主索引?如何使用列条件检索值?我的意思是如何维护次索引?您能否像我在第一个示例中给出的那样给出示例。1一个单行键数据驻留在一个节点上,即在通过单行键获取数据的情况下,无需从多个节点读取数据—它将来自单个节点。2在二级表的情况下,每个节点仅对其本地保存的数据进行索引,因此在这种情况下,读取也将发生在单个节点上。感谢您的回答,但很明显,我最初的问题是为什么CASSANDRA、HBASE等中不支持聚合函数。在我看来,聚合函数在NOSQL db中的I/O应该更少。再看一篇博客。
rowkey | column family | column | value
key1   | entry         | name   | test
key1   | entry         | value  | 5
key2   | entry         | name   | test1
key2   | entry         | value  | 10