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