【问题标题】:C++ persistence in database数据库中的 C++ 持久性
【发布时间】:2014-02-12 16:35:24
【问题描述】:

我想将我的一些对象保存在数据库中(这可能是关系数据库(postgresql 或 MariaDB)或 MongoDB)。我发现了许多看起来可能有用的库,但我缺少整体情况。

我使用 boost::serialization 将 c++ 序列化为 xml / 二进制,但我不清楚如何将其输入数据库(我使用二进制还是 xml 格式?)?

如何将它放入我的 mongoDB 或 postgresql?

【问题讨论】:

  • 这是在寻找工具推荐。此外,非常明确地标记垃圾邮件。
  • 投票重开,我可以回答这个问题
  • 大家后退; sehe可以回答这个问题
  • 提示 boost::spirit 解析为 VARCHAR 字段。
  • @DeadMG 错了 :) 再猜

标签: c++ mongodb postgresql serialization boost


【解决方案1】:

您可以序列化为二进制,因为它更小更快。此外,无论如何,XML 格式在 Boost 序列化之外也不是很漂亮/易于使用。

警告:如果您需要在不同机器上使用该格式,请使用 Boost Portable Archive (EPA http://epa.codeplex.com/)。

你通常会将它存储在一个列中

  • 文本或 CLOB(字符大对象),通过 base64 编码并将其放入数据库本机字符集(base64 即使对 ASCII 也是安全的)

  • BLOB(二进制大对象)不需要编码,存储效率更高。

注意:如果需要索引,请将索引属性存储在普通数据库列中。

最后,如果您愿意,我最近制作了一个流缓冲区,允许您将数据直接流式传输到 Sqlite BLOB 列中。也许您可以从中收集一些您可以使用的想法:

【讨论】:

  • 谢谢!特别是对于便携式存档警告。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-09
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 2016-10-19
  • 2015-12-23
  • 2013-09-19
相关资源
最近更新 更多