我正在开发一个应用程序,我们正在编写大量的键值对。在生产环境中,数据库大小将达到数百 TB,甚至数 PB。密钥为 20 字节,值最大为 128 KB,很少小于 4 KB。现在我们正在使用 MongoDB。性能不是很好,因为显然这里有很多开销。MongoDB 写入文件系统,该文件系统写入 LVM,该 LVM 进一步写入 RAID 6 阵列。
由于我们的要求非常基本,我认为使用通用数据库系统会影响性能。我正在考虑实现一个简单的数据库系统,我们可以将文档(或“值”)直接放入原始驱动器(实际上是 RAID 阵列),并存储密钥(以及指向原始值所在位置的指针)驱动器)在由 SSD 支持的快速内存数据库中。这也将加快读取速度,因为不会有任何碎片(与使用文件系统相反)。
尽管文档很少被删除,但我们仍然必须在设备上维护一个可用空间池(文件系统会提供的东西)。
我的问题是,这真的会带来任何重大改进吗?此外,是否有任何文档存储系统可以执行此类操作?或任何类似的东西,我们可以用作起始点?