.Net架构挑战:易发生变化的Frankestein模型
早上好!.Net架构挑战:易发生变化的Frankestein模型
我们一直在挠头与在办公室这个有趣的场景,我们很希望听到你的想法和做法:
我们有一个数据库,它的模式是 容易更改-lets叫它 Prony - 。 (用于存储配置参数 嵌入式设备。因此,如果嵌入式设备 家伙需要一个新表, 属性或关系为 模型,他应该能够适应 在一个简单的方法架构-happens所以 经常 - )。
prony需要一个web界面来创建/编辑其数据(一组简单的CRUDs就足够了)。
我们必须包含 数据也需要加载到 设备,使得一些 转换之后另一个数据库 - 让我们称之为这个 Oddy - (这它是由一个已经存在的 管理网络生成的数据应用)。
最后我们有特雷西,一个服务器,我们的数据库和我们的嵌入式设备进行通信。 她应该自动适应自己,适应我们的dbs模式更改并将数据序列化到设备。
不错的拼图,不这么认为吗? :)
我们目前的候选人:
-
拉迪:快速
允许创建 普罗尼一些看法,使数据转换从Oddy 。然后 使用DynamicData(或某些RAD 工具)创建/更新一个简单的Web 界面普罗尼(这样他就可以 甚至从未来的Prony咨询transformated数据 :)。关于 特雷西,她将需要重新编译 更新她的DB模式(实体框架应该工作),并使用反射递归探索模式和序列化数据。
缺点:
- 我们将不得不重新编译特雷西和普罗尼的Web界面。
你怎么看候选人的?
任何想法?
处理产品发布后不断变化的数据模型的一种方法是全部或部分使用EAV Database Model数据库设计。 EAV结构添加了行而不是列或表格,并允许更少频繁的模式更改(或根本不需要)。
它确实带有自己的一组注意事项,例如需要经常调整数据,但他们可以被管理。生产中有很多EAV dbs。
性能说明:人们经常担心EAV的性能。我有很多EAV,EAV表运行的记录超过1000万条。读取,插入,更新和删除都很好。当你开始大量报告这种数据结构时,会遇到麻烦。在你的情况下,你正在存储设备的配置信息。这不是无害或微不足道的,但我会说,数据库的这部分听起来像EAV的一个很好的候选人,因为你的读写会受到限制,我猜你的报告需要简单。
Hi Paul, 嘿,这是一个不错的主意,因此可以在不重新编译的情况下进行模式更改:) +1 – SDReyes 2010-04-02 17:57:26
绝对正确。您只需确保代码与持久性模型一样灵活。例如。你需要处理新的实体,还是只需要添加/修改一组已知实体的属性? – 2010-04-02 17:59:28
嗨保罗,在这种情况下,是的,我们还需要创建新的实体。再次好点+1)。我正在考虑Umbraco(已经是EAV,并且有一个很好的网页界面)。我们只需要找到一种将Umbraco与外部DBS(Oddy)整合的方法。你怎么看? – SDReyes 2010-04-02 18:05:43