我有一个数据库设计问题,其中数据库对象的属性不固定。并且应用程序用户需要随时选择向对象添加属性。
由于这无法在具有固定列数的传统数据库设计中实现,因此我正在考虑使用键值对设计模式并且我正在寻找在 c#(.Net) 中实现它的方法。
我更喜欢使用 Mysql 作为后端数据库。
Q1。序列化对象并存储在 mysql 数据库中的最佳方法是什么?(XML 或 JSON 或二进制?)
Q2。是否有任何键值对数据库引擎,具有强大的 .Net 绑定?
如果您不需要查询/报告这些属性,我建议您保存为 XML,使用某种松散耦合序列化您的对象,如果添加或删除属性,则不会出错。在提供内容时,您的应用程序可以处理 JSON。
如果您确实需要使用其他数据库字段进行查询/报告,我建议您提出某种可以存储数据的数据库模式。
序列化会为您的应用程序增加性能开销,但如果您这样做,那么我会使用二进制序列化,因为它是最快的。看看protobuf-net进行序列化。
据我所知,MySQL 支持 XML 字段。我不确定它是否可以索引它们。
只需使用XmlSerializer将您的对象序列化为 xml,然后查看MySQL xml 函数。
回答 Q2:
Apache CouchDB 存储 JSON。
这是 C# 的入门指南:http ://wiki.apache.org/couchdb/Getting_started_with_C%23
该数据库有一个 RESTful 界面,可以轻松地从任何语言使用。
你确定你需要关系数据库吗?对于我的需要,db4objects就足够了