2017-07-20 68 views
1

Cassandra是Hadoop作为数据仓库的一个很好的备选方案,其中数据仅附加到数据仓库中,源数据库中的所有更新都不应覆盖数据仓库中的现有行,而是被追加。 Cassandra是否真的可以充当数据仓库或仅仅作为存储批处理/流查询结果的数据库?Cassandra用于数据仓库

回答

1

Cassandra既可以用作数据仓库(原始数据存储),也可以用作数据库(用于最终数据存储)。这更多取决于您想要对数据执行的情况。
您甚至可能需要同时拥有Hadoop和Cassandra才能达到不同的目的。
假设您需要收集和处理来自多个移动设备的数据,并向用户提供一些复杂的聚合报告。因此,首先,您需要尽可能快地保存数据(因为新部分经常出现),因此您在此处使用Cassandra。由于Cassandra在聚合功能方面有限,因此您需要将数据加载到HDFS中,并通过HQL脚本进行一些处理(假设您不擅长编码,但是复杂的SQL很好)。然后,您将报告结果从HDFS移动到由用户ID分区的专用报告表中的Cassandra。
因此,当用户想要在上个月获得有关其活动的聚合报告时,该应用程序将采用活动用户的ID并返回Cassandra的聚合结果(因为它是简单的键值搜索)。
因此,对于您的问题,是的,它可能是一种替代方案,但选择策略取决于数据类型和应用程序业务案例。
你可以阅读有关卡桑德拉 的使用here

+0

更多信息,比方说,我想记录源数据库中每一个变化,看到的变化给它加时则可以卡桑德拉帮助那里,因为它主要是一个OLTP数据库可能更新现有的行,而不是每个变化添加一个新的 – guru107

+0

是的,这是有道理的一些限制。例如,每个Cassandra都对应于RDBMS行。所以基本上,卡桑德拉的“插入”命令只会将行添加到新列中,并且执行得很好。但是,假设你的数据经常改变。所以你只是想回滚一些变化,但你所拥有的只有一行,有1000万列。你如何找到回滚点?您也可以考虑存储不是按行分发的更改,而是通过一些时间戳。但是,那么很难找到在大行列表中更改的行。 –