想象一下您的需求是您有 3 个巨大的表(结构化数据),每个表中有 300 亿行(总大小为 4TB),并且您的许多并发用户(它们是远程 LAN 机器上的并行操作系统线程)需要读取一部分数据通过他们的 SELELCT WHERE GROUPBY 查询和高并发,比如 10,000 次并发读取,同时用户也需要将(无更新)数据插入到这些表中,高并发也像 2000 个并发写入者(遍布数据中心 LAN 网络) . 用户希望从这个存储中尽可能快地读取和插入,每次读取和写入将发生在 ms 到 1 秒的范围内。
你推荐什么技术来满足这样的要求?是否有任何数据存储或键值存储可以做到这一点?云不是一种选择。
一些说明:
用户不必立即查看数据,最终的一致性是可以接受的。数据是通过存储可以提供的任何驱动程序访问的,用户再次只是在数据中心的远程机器上运行的线程。查询大多类似于 SELECT WHERE GROUPBY。
数据为表格格式,每行约 60 个字节。
没有云选项,我不能使用 DynamoDB 或类似的解决方案。我必须能够在数据中心内部托管它。
表的所有数据都可以随时读取,使用模式不可预测。没有连接或超长查询。不需要 DR,但需要合理的 HA,但不必太花哨。每个读者都根据它的 where 子句获得一批行,而行并不真正相关。我们可能可以为每一行设置固定长度,但我希望存储层会担心它。
此外,我最关心的是并发读取时发生的所有并发写入。
非常感谢您对此的见解。
更重要的是,我有三个这样的表,每 300 亿行包含不同的对象类型