具有随机值访问功能的键值数据库



我正在寻找一个用于存储二进制数据的数据库(每个文档16KB(。要求:

  • 高可用性
  • 字节的随机访问,即从40个字节到最后读取字节

我阅读了ScyllaDB、RocksDb和RiakKV的文档,但我还没有找到第二个需求。目前应用程序使用带有Blob的MySql,但在此设置中达到了性能限制。

我认为使用ScyllaDb/Casandra数据模型时,主键可以是UUID,而辅键可以是几个小块的数量。在这个模型中,客户端可以查询一系列辅助密钥并拒绝额外的字节。

是否存在符合上述要求的数据库?

Scylla、Cassandra和DynamoDB(它们都共享一个类似的数据模型(无法以您希望的方式读取字符串属性的子字符串

然而,这三种方法都可以让你完全按照你所说的去做,这确实是一个很好的解决方案:你可以将16-KB的字符串拆分为十六个1-KB的字符串,每个字符串都存储在一个单独的项目中,具有相同的分区键。然后,根据您想要读取的字节,您可以只扫描该分区的一部分——所有三个数据库都有一种有效的方法来做到这一点(从磁盘读取整个分区是顺序和高效的(。

您可以争辩说,您只想读取字节1056-1237,而不想读取字节1024-2047。然而,在现实中,从磁盘到云计费的一切都是分块工作的,所以即使你有查询字节1056-1237而不是1024-2047的技术能力,你的成本也不会更低。

最新更新