我需要在Apache Cassandra中建模和存储财务数据。Apache Cassandra中的财务数据分析建模?
数据按日期和业务单位进行访问,所以目前我的模型使用日期和业务单位ID作为复合行键。
我想使用宽行,这样我就可以在一个查询中将数字拉到一整天(和单位)。
对于任何给定的一天,对于特定的业务单位,我需要存储一系列越来越精细故障的,像这样(忽略的人物,他们是纯粹的举例):
| rowkey | USD | GBP | JPY | etc ....
|-------------|-------|------|------|----------
| 31122014-1 | 112 | 3006 | 234 |
| 31122014-2 | 3378 | -12.4| 998 |
| 31122014-3 | -456 | 2034 | 127 |
然后一个更详细的分类,使用化合物列:
| rowkey | USD-D1 | USD-D2 | GBP-D1 | GBP-D2 | etc ....
|-------------|--------|--------|--------|------------------
| 31122014-1 | 65 | 54 | 175 | 29 |
| 31122014-2 | 2003 | -6.4 | 603 | 349 |
| 31122014-3 | -230 | -198 | -53 | 217 |
然后一个更详细的分类:
| rowkey | USD-D1-X1 | USD-D1-X2 | USD-D1-X3 | USD-D2-X1 | etc ....
|-------------|-----------|-----------|-----------|-----------|-------
| 31122014-1 | 23 | 16 | 98 | 29 |
| 31122014-2 | 389 | -3.2 | 237 | 119 |
| 31122014-3 | -105 | -67 | -28 | 178 |
这是使用三个独立的列系列对这些故障进行建模的最佳方法(如此处所示)?
或者只存储最细粒度的细分,然后使用某种形式的列聚合(如果存在)来提取不太细化的数据集会更有意义吗?
我知道卡桑德拉的聚合能力是有限/不存在的,我没有在API中找到任何东西来建议我如何聚合这样的列。
我知道我可以在应用层进行聚合,但问题是关于检索不必要的数据,移动计算开销和维护额外的列族之间的权衡。我希望Cassandra提供了一些在数据层解决这个问题的方法。
卡桑德拉不支持那种你问及可能永远聚合的将。然而,有完整的分析包可以与Cassandra集成以提供这些功能。您最好的选择是DataStax Enterprise,使用他们的Hadoop/Spark集成,或者搞清楚如何在Cassandra集群上自己使用OSS Spark-Cassandra连接器。 – mildewey 2015-02-10 23:22:36