将Protobuf消息保留到数据库

时间:2017-08-13 09:59:25

标签: java go serialization protocol-buffers

使用protobuf3持久保存数据的正确方法是什么。我正在使用golang和Java,两者都支持ORM。在带有Hibernate的java和带有gorm的golang中。我需要将生成的代码转换为相应的实体模型。我认为维持相同的对象结构更加痛苦,以便ORM可以理解。是否有任何数据库可以与protobuf对象一起使用。或者我可以定义protobuf本身中对象之间的关系。

任何帮助都非常感激。

3 个答案:

答案 0 :(得分:2)

这个问题有一个不直接的解决方案。

Protobuf 3为消息标准JSON mapping。将消息序列化为JSON后,您可以使用多种方法将其存储在数据库中。

以下(以及更多)数据库可以存储JSON数据:

  • MariaDB的
  • 的PostgreSQL
  • MongoDB的

答案 1 :(得分:1)

根据定义,您的ORM正在处理对象。它不应该知道或关心网络上的序列化。我建议将protobuf消息反序列化为您的ORM习惯的对象并让它们持久存在。将持久层与网络协议相结合是没有充分理由的。

如果你摆脱了JPA并使用基于文档的解决方案,那么直接存储protobuf序列化可能是有意义的。

您必须决定JPA为您提供多少价值。

答案 2 :(得分:0)

虽然这个问题已经很老了,但从那时起事情就发生了,Apple 于 2018 年发布的 FoundationDB Record Layer 原生存储了 Protocol Buffer。