2012-06-21 4 views
2

У меня есть несколько сотен тысяч объектов ProtoBuf в контейнерном объекте в Java.Java: эффективно хранить объекты Protobuf в MySQL

Контейнер стал довольно большим, и сериализация в базу данных MySQL, по-видимому, является лучшей идеей.

Что является самым разумным способом хранения объектов Protobuf в MySQL с использованием Java?

  • Какая правильная техника сериализации (де)?
  • Какой тип поля следует использовать в MySQL-схеме для сериализованных объектов?

ответ

2

Использовать встроенную технологию сериализации буферов протокола. Serialize protobufs, а затем сохраните сериализованные данные в базе данных. Чтобы получить значения, просто верните данные из базы данных и используйте один из различных методов parseFrom, чтобы вернуть информацию.

Я не эксперт по MySQL (или даже вообще SQL), но вы, вероятно, использовали бы тип данных BLOB для хранения этих данных. У вас может быть два столбца, один из которых содержит имя класса, а другой - данные. В этот момент можно было бы использовать отражение Java для загрузки необходимого класса и вызвать parseFrom для этого объекта.

0

Возможно, вы, вероятно, намного хуже, чем Hibernate. Красота такого подхода заключалась бы в том, что вы могли бы сериализовать их на достойные записи, которые можно было бы запросить, не теряя возможности вернуть их обратно в сообщения protobuf.

Смежные вопросы