我计划构建一个应用程序,该应用程序必须允许用户动态设置自己的数据模型(即创建字段、数据结构等)。
我面临着几种技术可能性,都有缺点。 :
我的要求是:
我觉得现在选择正确的设计一定是好的,因为后者很难改变。
对于任何反馈,我们都表示感谢
最佳答案
一种选择是使用无模式的 NoSQL 数据库,如 MongoDB。新字段不需要预先定义(没有架构修改的麻烦),不同的记录可以有不同的字段。这是像这样的 NoSQL 存储的好处之一。
例如在 mongo 中,您的“表”可以合法地包含以下 2 条记录:
{
"ID" : 1,
"FirstName" : "Joe",
"LastName" : "Bloggs",
"FavouriteColour" : "Blue"
}
{
"ID" : 2,
"FirstName" : "John",
"LastName" : "Smith",
"DOB" : "2000-01-01"
}
添加新字段就像开始将其包含在记录中一样简单。
根据我的经验,在像 SQL Server 这样的 RDBMS 中拥有一个完全灵活/动态的模式可能有点痛苦,并且很难实现高性能。我有使用您列出的选项 1) 和 3) 的经验。当数据被存储为 XML 时,我最终通常需要将数据分解成关系形式以用于某些目的。
关于c# - 用户可定制的数据结构的设计选择?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5140014/