【发布时间】:2018-01-26 09:42:27
【问题描述】:
目前我们正在使用 ProtocolBuffers 在 python 和 C++ 之间交换数据。但是,我们遇到了协议缓冲区的最大文件大小限制,并且正在考虑将所有内容切换到 Cap'n Proto。但是,由于它与协议缓冲区有些相关,我想知道 Cap'n Proto 是否也对最大文件大小有限制?
【问题讨论】:
-
我们在谈论什么样的尺寸?请注意,protobuf 可以比官方推荐的想法大得多。 capnproto 被设计为对大数据更友好,具有多板文件布局,但它没有广泛的支持 - 我想这取决于这对你是否重要
-
我已经在使用 CodedInputStream 来读取更大的文件。但据我了解,protobuffers 的硬限制为 2GB。如果可能的话,我希望有比这更大的文件。
-
协议没有硬性限制(嗯,有是,但它涉及64位数字,所以不会有问题)。如果一个特定的实现强加了一个硬性限制,那可能是一个问题 - 理所当然。有一个 hack suggested here 关于如何绕过 C++ 版本。我运行其中一个 C# 版本,并帮助人们处理比 2GiB 大得多的文件。
-
感谢为我指出这一点。虽然我们自己编译库并且可以调整
kDefaultTotalBytesLimit,但在我们的构建过程中调整库并不是 100% 舒服的。您是否碰巧知道 Cap'n proto 是否可以开箱即用地处理更大的文件? -
我相信可以,是的;几年前我写了一些 capnp 工具,但我有一段时间没碰过它
标签: protocol-buffers capnproto