存储20TB数据的NoSql解决方案,作为向量/数组?
我需要建立一个系统,能够高效地存储和维护大量的数据(大约20TB),并且能够以“向量”的形式访问这些数据。以下是我的需求:
(1) 时间(以YYYYMMDDHHMMSS的整数形式给出)
(2) 字段(一个任意长度的字符串,表示医院的名称)
(3) 仪器ID(一个整数,表示仪器的唯一标识)
我需要一种方法,可以单独存储数据,也就是说,像这样:
存储 23789.46 作为仪器ID = 5,字段 = 'Nhsdg',时间 = 20040713113500 的数据
同时,我需要能够快速执行以下查询: 给我所有字段为 'X',时间戳为 'Y' 的仪器。
为了建立这些系统,我有60台双核机器(每台有1GB的内存和1.5TB的硬盘)。
有没有推荐的合适的NoSQL解决方案(最好能与Python配合使用)?
注意:系统将首先存储历史数据(大约20TB)。每天我最多会添加大约200MB的数据。我只需要一个能够扩展的解决方案,我的使用场景只是一个简单的查询: 给我所有字段为 'X',时间戳为 'Y' 的仪器
1 个回答
3
MongoDB 的扩展性非常好,支持很多在关系型数据库中常见的索引功能,比如复合键索引。你可以在数据的名称和时间属性上使用复合索引。这样,你就可以根据特定的名称和日期范围来获取所有的仪器读数。
[如果你只关心这个基本查询,没别的需求,你可以把名称和时间戳组合在一起,称之为你的键,这在任何键值存储中都能用...]
HBase 也是一个很不错的选择。你可以在名称和日期上使用复合行键。
正如其他人提到的,你当然可以使用关系型数据库。MySQL 和 PostgreSQL 完全可以处理这种负载,并且在这种情况下,表分区 可能也是个不错的选择,因为你需要处理时间范围。你还可以使用批量加载(在加载时禁用索引)来减少插入时间。