2014-02-12 4 views
2

Я хотел бы сохранить некоторые из моих объектов в базе данных (это может быть реляционное (postgresql или MariaDB) или MongoDB). Я нашел несколько библиотек, которые кажутся потенциально полезными, но мне не хватает общей картины.Сохранение C++ в базе данных

Я использовал boost :: serialization сериализую C++ в xml/binary, но мне не ясно, как это получить в базе данных (я использую бинарный или xml-формат?)?

Как это получить в моем mongoDB или postgresql?

+0

Это ищет рекомендации инструмента. Кроме того, совершенно определенно отмечайте спам. – sehe

+0

обновленная формулировка – user2158687

+0

Проголосовали за повторное открытие, я могу ответить на этот вопрос – sehe

ответ

2

Вы сериализуете двоичный код, поскольку он меньше и намного быстрее. Кроме того, формат XML не очень хорош/легко использовать за пределами Boost Serialization.

ВНИМАНИЕ: Используйте Boost Portable Archive (EPA http://epa.codeplex.com/), если вам нужно использовать формат на разных машинах.

вы обычно храните его в колонке

  • текст или CLOB (символьный большой объект) путем кодирования в base64 и положить, что в базе данных родной кодировкой (base64 безопасен даже для ASCII)

  • BLOB (двоичный большой объект), который не требует кодирования и может быть более эффективным хранилищем.

Примечание: если вам нужно индексировать, сохранять свойства индекса в нормальных столбцов базы данных.

Наконец, если хотите, я недавно создал потоковый буферизатор, который позволяет передавать данные непосредственно в столбцы Sqlite BLOB. Возможно, вы можете почерпнуть некоторые идеи из этого вы могли бы использовать:

+0

спасибо! в частности, для предупреждения портативного архива. – user2158687

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