我正在开发一个高性能仪表板项目,其中结果主要与非聚合数据混合在一起。第一页由8个不同的复杂查询加载,获取混合数据。仪表板由集中式数据库(Oracle 11g)提供服务,该数据库实时从许多系统接收数据(使用复制工具)。显示的数据是通过非常复杂的查询(多个join
,count
,group by
和许多where
条件来实现的。
问题在于,随着数据的增加,数据库查询所花费的时间超过了定义/同意的时间。我想将聚合功能移到Columnar数据库说HBase
(所有计数),其余线性数据将从Oracle获取。两个数据都将基于App层上的键合并。如果这是正确的方法,需要专家意见。
有些事情我不清楚:
1. Sqoop
是否能够根据查询/视图或仅基于表加载数据?连续或一次?
2.如果修改了记录(例如状态已更改),HBase
将如何知道?
答案 0 :(得分:0)
我的两分钱。 HBase是用于快速查找查询的NoSQL数据库构建,而不是用于进行聚合的即席查询。
如果您打算使用hadoop群集,您可以尝试使用镶木地板存储格式的蜂巢。如果您需要接近实时查询,可以使用MPP数据库。商业选项是Vertica或者亚马逊的Redshift。对于开源解决方案,您可以使用InfoBrigth。
这些列式选项将为您提供greate聚合查询性能。