早上好!
我们一直在办公室摸索着这个有趣的场景,我们渴望听到您的想法和方法:
我们有一个数据库,其架构是 容易发生变化-lets称之为 的普罗尼 - (用于存储配置参数 嵌入式设备。所以,如果嵌入 设备家伙需要一张新桌子, 财产或关系 模特,他应该能够适应 架构很简单 - 就是这样 经常 - )。
Prony 需要一个网络界面 创建/编辑其数据(一组简单的CRUD就足够了。)
我们有另一个包含的数据库 还需要加载的数据 设备,制作完成后 转换 - 让我们调用这个 Oddy - (这个数据是由一个已经存在的数据生成的 管理网络应用程序)。
最后我们有 Tracy ,这是一个与我们的数据库和嵌入式设备进行通信的服务器。 她应该自己调整自己,修改我们的dbs架构,并将数据序列化到设备。
我们当前的候选人:
Rady:快速
让我们创建一些视图 从 Oddy 进行数据转换的 Prony 。然后 使用 DynamicData (或某些RAD 工具)来创建/更新简单的Web Prony 的界面(所以他可以 甚至可以查阅转换后的数据 来自 Prony :)。关于 Tracy ,她需要重新编译 更新她的数据库架构( 实体框架 应该工作)并使用 Reflection 来递归地探索架构和序列化数据
缺点:
您如何看待候选人?
有什么想法吗?
答案 0 :(得分:2)
处理产品发布后不断变化的数据模型的一种方法是使用数据库设计的全部或部分EAV Database Model。 EAV结构添加行而不是列或表,并允许更少频繁的架构更改(或根本不添加)。
当然,它确实带有一系列警告,例如需要经常转动数据,但可以对它们进行管理。生产中有很多EAV dbs。
效果说明:人们经常担心EAV的性能。我有很多EAV,EAV表运行超过1000万条记录。读取,插入,更新和删除都没问题。当你开始对这样的数据结构进行大量报告时会遇到麻烦。在您的情况下,您正在存储设备的配置信息。这不是无害或微不足道但我会说db的那部分听起来像是EAV的一个很好的候选者,因为你的读写将受到限制,我猜你的报告需要简单。