在我问我的问题之前,先介绍一下我们的问题的背景。
我们正在开发政府收入预测应用程序。在这个应用程序中,我们收集有关以前收入的数据,应用几个计量经济学和政治预测模型(通过几个阶段),同时将其保存到数据库中。
简而言之,这是投影系统的简化模型:
使用此模式的几行(开始时,约 6.000 行)代表过去的收入(称为场景):
+------+------+------+------+------+-------+---------+
| Cat1 | Cat2 | Cat3 | Cat4 | Year | Month | Revenue |
+------+------+------+------+------+-------+---------+
在整个投影系统中,数据以多种方式进行转换(移动类别、更改收入值、修复非典型性等)。每个转换都在一个阶段完成:
Initial Scenario (S0) ---(1st transformation phase)--> Transformed Scenario (S1)
S1 ---(2nd t.p.)--> S2 ---> S3 ---...---> SN
每个阶段转换场景的一部分,这部分的大小在数据的 2-100% 之间变化,并且部分场景状态必须保持直到达到其最终状态 (SN)。部分状态可以只是转换后的线或整个部分场景(只要可以比较部分状态)。
此外,用户可以返回该过程(例如,返回第 2 阶段)并从那里重新开始投影,而忽略之前完成的工作。
在这个用例中,我们遇到了 RDBMS 的一个问题:它们的写入操作真的很慢(需要半个小时来进行场景投影)。
在阅读了 NoSQL DBMS 之后,我们得出了几个选择,但是,由于我仍在学习曲线上,我想问一下:在这个用例上使用的最佳选择是什么:VoltDB、Redis、Riak、Cassandra、 MongoDB 还是 HBase?
提前致谢。