Xodus中的键和/或值ByteIterable是否有最大长度?如果有硬限制,那么该限制是多少(即多少个字节)?如果ByteIterable超过该限制会发生什么?

最佳答案

Xodus是一个日志结构的数据库,所有更改均按顺序写入日志,该日志是无限数量的.xd文件序列。在最低级别上,任何键/值对均作为单个记录写入,该记录只能存在于单个.xd文件中。这意味着键和值的大小之和不能超过单个.xd文件的大小。更重要的是,存储大小接近单个.xd文件大小的键/值对也不是一件好事,因为这将创建一个具有大量不可移动(通过数据库垃圾收集器)可用空间的数据库。尝试写太大的键/值对将失败,并抛出TooBigLoggableException

单个.xd文件的大小由EnvironmentConfig.LOG_FILE_SIZE设置控制。默认情况下为8388608字节(0x800000,8MiB),因此问题的答案就像键的最大长度一样,值是8388608(0x800000)字节。

要处理任意大小的数据,请使用Virtual File Systems

09-26 03:20