【问题标题】:Key value pair database in .Net.Net 中的键值对数据库
【发布时间】:2013-01-14 05:31:25
【问题描述】:

我有一个数据库设计问题,其中数据库对象的属性不固定。并且应用程序用户需要随时选择向对象添加属性。

由于这不能在具有固定列数的传统数据库设计中实现,我正在考虑使用键值对设计模式 我正在寻找在 c#(.Net) 中实现它的方法。

我更喜欢使用 Mysql 作为后端数据库。

第一季度。序列化对象并存储在 mysql 数据库中的最佳方法是什么? (XML 或 JSON 或二进制?)

第二季度。是否有任何键值对数据库引擎,具有强大的 .Net 绑定?

【问题讨论】:

  • 我建议在代码中创建表格。

标签: .net database key-value


【解决方案1】:

序列化会为您的应用程序增加性能开销,但如果您这样做,那么我会使用二进制序列化,因为它是最快的。看protobuf-net进行序列化。

【讨论】:

    【解决方案2】:

    如果您不需要查询/报告这些属性,我建议您保存为 XML,使用某种松散耦合序列化您的对象,如果添加或删除属性也不会出错。提供内容时,您的应用程序可以处理 JSON。

    如果您确实需要使用其他数据库字段进行查询/报告,我建议您提出某种可以存储数据的数据库架构。

    【讨论】:

    • 在决定使用数据的序列化版本之前要非常小心。如果您组织中的要求可能会发生变化,我建议您不要这样做。想出一个像样的数据库架构并不难。
    • 我也同意这一点,更改(以及保存一些额外信息的快速技巧)和未来查询此数据的要求将再次困扰您。
    【解决方案3】:

    据我所知,MySQL 支持 XML 字段。我不确定它是否可以索引它们。

    只需使用XmlSerializer 将您的对象序列化为xml,然后查看MySQL xml functions

    【讨论】:

      【解决方案4】:

      回答 Q2:

      Apache CouchDB 存储 JSON。

      这是 C# 的入门指南:http://wiki.apache.org/couchdb/Getting_started_with_C%23

      该数据库有一个 RESTful 界面,可以轻松地从任何语言中使用。

      【讨论】:

        【解决方案5】:

        您确定需要关系数据库吗?对于我的需要,db4objects 就足够了

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-09-12
          • 2012-03-09
          • 2014-09-29
          • 1970-01-01
          • 2011-12-25
          • 1970-01-01
          • 2012-08-15
          相关资源
          最近更新 更多