2

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

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

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

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

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

4

5 回答 5

1

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

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

于 2009-08-20T09:49:42.707 回答
1

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

于 2009-08-20T09:51:48.490 回答
0

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

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

于 2009-08-20T09:47:25.007 回答
0

回答 Q2:

Apache CouchDB 存储 JSON。

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

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

于 2009-08-20T09:52:42.233 回答
0

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

于 2009-08-20T10:14:43.780 回答