我需要建立一个有效存储和系统的系统。保持大量(20 [TB])数据(并能够以'向量'形式访问它)。以下是我的维度:
(1) time (given as an integer of the form YYYYMMDDHHMMSS)
(2) field (a string of any given length, representing a name of a hospital)
(3) instrumentID (an integer representing a uniqueID for the instrument)
我需要一种能够单独存储数据的方法,意思是:
商店 23789.46 as the data for instrumentID = 5 on field = 'Nhsdg' on time = 20040713113500
但是,我需要以下查询来运行 FAST :give me all instruments for field 'X' on timestamp 'Y'
。
为了构建这些系统,我获得了60台双核机器(每台机器有1GB RAM,1.5TB磁盘)
关于合适的NoSQL解决方案的任何建议(理想情况下可以使用python)?
注意:系统将首先存储历史数据(大约为20 [TB])。每天我最多只会增加200 [MB]。我只需要一个可扩展和扩展的解决方案。我的用例只是一个简单的查询:give me all instruments for field 'X' on timestamp 'Y'
答案 0 :(得分:3)
MongoDB可以很好地扩展并支持您通常在诸如compound key indexes之类的RDBMS中找到的许多索引功能。您可以对数据中的名称和时间属性使用复合索引。然后,您可以检索具有特定名称和日期范围的所有仪器读数。
[现在在简单的情况下,你只对那个基本查询严格感兴趣而不是别的,你可以只将名称和时间戳结合起来并调用你的密钥,这可以在任何键值存储中使用.. ]
HBase是另一个很好的选择。您可以在名称和日期上使用composite row key。
正如其他人所提到的,你绝对可以使用关系数据库。 MySQL& PostgreSQL当然可以处理负载,并且在此场景中可能需要table partitioning,因为您处理时间范围。您可以使用批量加载(并在加载期间禁用索引)来减少插入时间。