使用protobuf3持久保存数据的正确方法是什么。我正在使用golang和Java,两者都支持ORM。在带有Hibernate的java和带有gorm的golang中。我需要将生成的代码转换为相应的实体模型。我认为维持相同的对象结构更加痛苦,以便ORM可以理解。是否有任何数据库可以与protobuf对象一起使用。或者我可以定义protobuf本身中对象之间的关系。
任何帮助都非常感激。
答案 0 :(得分:2)
这个问题有一个不直接的解决方案。
Protobuf 3为消息标准JSON mapping。将消息序列化为JSON后,您可以使用多种方法将其存储在数据库中。
以下(以及更多)数据库可以存储JSON数据:
答案 1 :(得分:1)
根据定义,您的ORM正在处理对象。它不应该知道或关心网络上的序列化。我建议将protobuf消息反序列化为您的ORM习惯的对象并让它们持久存在。将持久层与网络协议相结合是没有充分理由的。
如果你摆脱了JPA并使用基于文档的解决方案,那么直接存储protobuf序列化可能是有意义的。
您必须决定JPA为您提供多少价值。
答案 2 :(得分:0)
虽然这个问题已经很老了,但从那时起事情就发生了,Apple 于 2018 年发布的 FoundationDB Record Layer 原生存储了 Protocol Buffer。