我的主要数据存储在postgres中。
根据这些数据,我需要计算非常复杂的汇总/统计信息,并尽可能接近实时。使用原始SQL,对这些结果的查询需要一个多小时才能计算出来,这是不可接受的。因此,我无法每次都从头开始计算结果。
不有什么作用:
- 索引-即使使用索引,在数十亿行上具有多个联接的复杂SQL查询也需要很短的时间
- 数据库的非规范化-不想在行本身上计算任何部分结果-管理此类实现将是一场噩梦
- 将主要数据从SQL切换到NoSQL-目前无法实现
一些可以实现我想要实现的想法:
- 完全像SQL一样的增量MapReduce自定义实现-我将侦听行更改,对于特定的聚合,将根据更改是否影响结果来更新存储的结果。
难以维护,需要从头开始自定义实现。
- 复制到NoSQL,然后内置MapReduce。
对于必须为此复制所有数据的操作而言,不是很理想,在MongoDB的情况下,我必须实现逻辑的“增量”部分(它的优点是我可以使用托管AWS服务)或使用非托管数据库。
所以问题是:
- 是否有其他方法可以实现它(在算法方面)? (MapReduce方法的替代方法)
- 是否为实现我想念的尽可能多的增量MapReduce的数据库提供了托管数据库服务?