gpt4 book ai didi

protocol-buffers - CapnProto 最大文件大小

转载 作者:行者123 更新时间:2023-12-02 15:02:53 29 4
gpt4 key购买 nike

目前我们正在使用 ProtocolBuffers 在 python 和 C++ 之间交换数据。然而,我们遇到了 Protocol Buffer 的最大文件大小限制,正在考虑将所有内容切换到 Cap'n Proto。但是,由于它与 Protocol Buffer 有些相关,我想知道 Cap'n Proto 是否也有最大文件大小的限制?

最佳答案

Cap'n Proto 的最大文件大小约为 2^64 字节,或 16 exbibytes——“对任何人来说应该足够了”。 :)

Cap'n Proto 实际上是一种非常适合超大数据文件的格式,因为它支持随机访问和延迟加载。当读取一个巨大的 Cap'n Proto 文件时,我建议使用 mmap() 将文件映射到内存中,然后将字节直接传递给 Cap'n Proto 实现(例如 capnp::C++ 中的 FlatArrayMessageReader)。这样,操作系统只会将您实际使用的文件页面带入内存。 (相比之下,使用 Protocol Buffers,有必要先将整个文件解析为内存中的数据结构,然后才能访问其中的任何一个。)

请注意,Cap'n Proto 结构中的单个 List 值有 2^29-1 个元素的限制。 TextData(字符串和字节 blob)是特殊类型的列表,因此这意味着任何单个连续文本或字节 blob 都限制在 512MB 以内。但是,您可以有多个这样的 blob,因此可以将更大的数据拆分成多个部分,从而将其存储到一个文件中。

另请注意,大多数 Cap'n Proto 实现在读取 Cap'n Proto 结构时默认会施加“遍历限制”,以抵御包含指针循环的恶意数据。通常这默认为 64MiB。对于更大的数据,您需要覆盖限制——在 C++ 中,您需要将自定义 ReaderOptions 传递给 MessageReader 构造函数。

关于protocol-buffers - CapnProto 最大文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48458839/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com