问题描述
我在一项研究中有一个大约 10000 名患者的数据集。对于每位患者,我都有一份各种测量值的列表。一些信息是标量数据(例如年龄),一些信息是测量的时间序列,一些其他信息甚至可以是位图。单个记录本身可能很厚(10kB 到 10MB)。数据实际上分两步处理:
在单个记录(患者)级别进行预处理,即提取原始数据中的一些特征,存储它们。计算时间序列中的一些斜率等。所有这些都可以在个人层面上完成,并且可以很容易地分布。
在预处理数据(提取的特征)之上,我需要计算一些聚合的东西,例如平均年龄,还有一些机器学习任务。
问题
显然,这非常适合在 Apache Spark(或任何 map-reduce 架构)中解决。在最一般的层面上,我的问题是:什么是最适合这种情况的 NoSQL 数据库?
到目前为止,我已经考虑了两个基本选项:
- MongoDB - 利用面向文档的存储,所有内容都在同一个地方。但是,我不确定较大二进制数据(图片、时间序列)的性能。
- Cassandra - 这可能有更好的二进制数据存储,但连接将是必要的(即使通过“患者 ID”索引所有数据进行了优化)。