我在 Java 的容器对象中有几十万个ProtoBuf对象。
容器变得非常大,序列化到 MySQL 数据库似乎是最好的主意。
使用 Java 在 MySQL 中存储 Protobuf 对象的最合理方法是什么?
- 什么是正确的(反)序列化技术?
- 我应该在 MySQL Schema 中为序列化对象使用哪种字段类型?
我在 Java 的容器对象中有几十万个ProtoBuf对象。
容器变得非常大,序列化到 MySQL 数据库似乎是最好的主意。
使用 Java 在 MySQL 中存储 Protobuf 对象的最合理方法是什么?
使用协议缓冲区内置序列化技术。 序列化protobufs,然后将序列化后的数据存入数据库。要检索这些值,只需从数据库中取回数据并使用各种 parseFrom 方法之一来取回信息。
我不是 MySQL(甚至一般的 SQL)方面的专家,但您可能会使用 BLOB 数据类型来存储这些数据。您可以有两列,一列保存类名,另一列保存数据。那时可以使用 Java 反射来加载所需的类,并在该对象上调用 parseFrom。
您可能会比 Hibernate 做得更糟。这种方法的美妙之处在于,您可以将它们序列化为可以查询的体面记录,同时不会失去将它们转回 protobuf 消息的能力。