我需要将proto的内容存储到mongoDB中,为此我将proto转换为json字符串,然后转换为Document对象。
有时候,proto会有多达14mb的数据,这使得上面的转换需要大约5秒,这会导致代码中的延迟太多。他们有更好的方法来处理这件事吗?
MongoDB Bson有16 MB的限制,但这种转换会带来延迟。
private static Document serialize(AggregationProto aggregationProto) {
try {
String json = JsonFormat.printer().print(aggregationProto);
return Document.parse(json);
} catch (InvalidProtocolBufferException e) {
throw new IllegalStateException("Failed to print aggregationProto as JSON", e);
}
上面是用于从proto转换到MongoDB文档的方法。
总的来说,我正在寻找类似下面的东西:
(proto <=> bson而不是proto <=> json <=> bson)
参考:https://stackoverflow.com/a/52586997/3301316
在此之后更新的任何内容:https://github.com/protocolbuffers/protobuf/issues/2601
1条答案
按热度按时间czfnxgou1#
通过文本格式在两种二进制格式之间转换总是相对较慢。Google表示他们不会直接支持BSON,所以你需要通过反射API(类似于JsonFormat,但用于BSON)或通过自定义插件进行代码生成。