Var*_*ian 5 java design-patterns protocol-buffers
我想将 protobuf 消息流式传输到文件中。
我有一个 protobuf 消息
message car {
... // some fields
}
Run Code Online (Sandbox Code Playgroud)
我的 java 代码将创建此汽车消息的多个对象。
我应该如何将这些消息流式传输到文件中。
据我所知,有两种方法可以解决它。
有另一个消息,如汽车
message cars {
repeated car c = 1;
}
Run Code Online (Sandbox Code Playgroud)
并使 java 代码创建一个汽车类型的对象,然后将其流式传输到文件中。
只需使用writeDelimitedTo函数将汽车消息适当地流式传输到单个文件中即可。
我想知道使用 protobuf 进行流式传输的更有效方法是什么。
什么时候应该使用模式 1,什么时候应该使用模式 2?
这是我从https://developers.google.com/protocol-buffers/docs/techniques#large-data得到的
我不清楚他们想说什么。
大数据集
Protocol Buffers 不是为处理大消息而设计的。作为一般经验法则,如果您要处理每个大于 1 兆字节的消息,则可能是时候考虑替代策略了。
也就是说,Protocol Buffers 非常适合处理大型数据集中的单个消息。通常,大数据集实际上只是小块的集合,其中每个小块可能是一个结构化的数据。尽管 Protocol Buffers 不能一次处理整个集合,但使用 Protocol Buffers 对每个部分进行编码可以大大简化您的问题:现在您只需要处理一组字节字符串而不是一组结构。
Protocol Buffers 不包含对大型数据集的任何内置支持,因为不同的情况需要不同的解决方案。有时一个简单的记录列表就可以了,而有时您可能需要更像数据库的东西。每个解决方案都应该作为一个单独的库来开发,这样只有那些需要它的人才需要支付费用。