可插拔数据存储架构

时间:2010-10-27 16:32:26

标签: c# database

我有一个可插拔的系统管理工具。这种事物的架构很好理解(接口,发布/订阅,......)。但是数据存储怎么样。人们做什么?

我需要插件才能添加新实体,扩展现有实体,建立新关系等等。

我的想法(SQL),不一定经过深思熟虑

  • 每个插件只是在安装时扩展架构。在过去,改变架构是一个很大的禁忌;现在数据库对此非常放松

  • 插件有自己的表。如果其中2个人拥有实体(比方)人,则有2个表p1_person和p2_person

  • 插件有自己的数据库

  • 发明了一种灵活的方案,其中表格是轻柔键入的。也许许多属性都包含在一个属性中。最终的目标是拥有一个名为data的大表,其中包含表名和密钥。列名和单个数据值。

不是SQL

  • 对象DB。我对这些没有经验。有人关心传递经验。例如db4o。我可以在应用发展时更改对象的“架构”

NO-SQL

  • 这是'目前正处于'。其中大多数似乎与我的需求略有不同。任何人都希望传递这些经验

对开放式问题的抱歉

1 个答案:

答案 0 :(得分:1)

我的建议是阅读实体框架

您正在描述的很多情况都可以使用表继承来解决(非常优雅)。

你对一个叫做数据的大桌子的想法让我计算机里的仓鼠哭了;)

总体趋势是远离弱类型模式,因为它们无法在编译时调试。您从实体框架中获得的是一种强类型的 extenislbe 模式,您可以使用linq进行编码。

对象数据库: 像你一样,我没有和他们一起玩过massivley - 但是当我考虑他们的时候是没有好的ORM for。和写ado.net代码的时候慢慢杀了我。

对于NO-SQL,这些是满足性能需求的数据库。 SQL在这种情况下执行得很糟糕,有很多小写。我说脸颊很糟糕 - 它表现得很好但是当你扩展到数百万并发用户时,一切都会发生变化。我对没有sql的理解是它是一种非合理化格式,专为大量小型快速写入和读取而设计。使用这些网站的网站规模通常非常大。

好的 - 回复

我现在很幸运能够参加一个绿色的田野项目,所以我使用EF来生成我的模式。 在非绿地项目中,我使用sql脚本来更新我的表结构。至于在sql中实现表继承,一旦你知道这个概念就很容易了,它本质上是一对多的关系,它只有0-1。

我不会编写更新数据库结构的.net代码......听起来像是等待发生在我身上的灾难。

开始认为我误解了你在寻找什么。我发现数据库是第二天性的,因为我花了很长时间与他们在一起。

我没有找到对脚本管理一丝不苟的替代品。