各位,
我现在已经开始阅读nosql相关的数据库,因为我正在研究数据库仓库相关的应用程序。
我有以下问题。我已经读过基础知识了。
问题1)当具有相同列的数据存储在一起时,如何在面向列的数据库中检索整个原始数据?
假设我们以以下格式存储数据,所以在内部它将像这样存储在面向列的数据库中。
测试|一起测试1,一起测试5 | 10。
键1:{名称:test,值:5}键2:{名称:test1,值:10}
那么,如果我们必须检索key1的数据,它是如何发生的呢(a和b是我的猜测)
a) 如果它必须分别从每一列存储器中提取数据,那么它的成本将非常高
b) 是否有任何索引机制来获取给定原始键的所有列的数据?
问题2)
我仔细阅读了一些文档,发现面向列的数据库更适合在单个列上运行聚合功能,因为i/o将更少。
在像cassandra和hbase这样的nosql面向列的存储中,我没有找到对sum、avg等聚合函数的适当支持可能会有一些调整/黑客攻击/更多的代码编写(如下所示)
apache cassandra如何进行聚合操作?实时查询/聚合数百万条记录-hadoop?hbase?如何使用hbase协处理器实现groupby?
问题3)在面向列的数据库中,连接是如何在内部发生的?
1条答案
按热度按时间wztqucjr1#
好问题,1)在cassandra中,如果您使用cqlsh,那么它看起来就像您在mysql或其他rdbms存储中存储数据一样。
cqlsh:test>
note:- you 可以使用键选择行,也可以使用辅助索引对其他列使用某些条件。
但在hbase中,结构如下所示
note:- you 可以选择每一行使用键或任何列值它非常容易。
2) 是的,nosqls也只支持dmls的批处理操作。
3) 所有nosqls数据存储中都不支持联接。它们不是用来连接的。
希望对你有帮助。