FlatBuffers 有大小限制吗?

Do FlatBuffers have size limits?

我可以在 FlatBuffer 中存储 100GB 的字符串吗? 10 TB(在 2019 年您可以购买比这更多 RAM 的服务器)?

它是否仅受限于我的服务器有多少 RAM/swap 还是您需要像使用 Protocol Buffers 一样设置硬限制(您不能设置超过 2GiB - 1 字节)?

单个 FlatBuffer 目前限制为 2GB(它使用 32 位有符号偏移量)。如果您想存储更多,则必须使用一系列缓冲区。

这有点道理,因为 FlatBuffers 在内存中是连续的,所以它比 Protobuf 对你的内存系统造成更大的压力(你可以从磁盘流式传输 100GB 的数据,然后最终会成为不连续的数据在内存中)。

我同意,有了 mmap 和朋友,现在肯定有 >2GB 的用例。有一些 64 位扩展的计划:https://github.com/google/flatbuffers/projects/10#card-14545298