Proto到json的转换耗时较长需要proto < => bson直接转换

6jygbczu  于 2023-05-23  发布在  其他
关注(0)|答案(1)|浏览(216)
    • bounty将在6天内到期**。此问题的答案有资格获得+50声望奖励。Jet正在寻找一个规范答案

我需要将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

czfnxgou

czfnxgou1#

通过文本格式在两种二进制格式之间转换总是相对较慢。Google表示他们不会直接支持BSON,所以你需要通过反射API(类似于JsonFormat,但用于BSON)或通过自定义插件进行代码生成。

相关问题