我有一个可插拔的系统管理工具。这种事物的架构很好理解(接口,发布/订阅,......)。但是数据存储怎么样。人们做什么?
我需要插件才能添加新实体,扩展现有实体,建立新关系等等。
我的想法(SQL),不一定经过深思熟虑
每个插件只是在安装时扩展架构。在过去,改变架构是一个很大的禁忌;现在数据库对此非常放松
插件有自己的表。如果其中2个人拥有实体(比方)人,则有2个表p1_person和p2_person
插件有自己的数据库
发明了一种灵活的方案,其中表格是轻柔键入的。也许许多属性都包含在一个属性中。最终的目标是拥有一个名为data的大表,其中包含表名和密钥。列名和单个数据值。
不是SQL
NO-SQL
对开放式问题的抱歉
答案 0 :(得分:1)
我的建议是阅读实体框架
您正在描述的很多情况都可以使用表继承来解决(非常优雅)。
你对一个叫做数据的大桌子的想法让我计算机里的仓鼠哭了;)
总体趋势是远离弱类型模式,因为它们无法在编译时调试。您从实体框架中获得的是一种强类型的 extenislbe 模式,您可以使用linq进行编码。
对象数据库: 像你一样,我没有和他们一起玩过massivley - 但是当我考虑他们的时候是没有好的ORM for。和写ado.net代码的时候慢慢杀了我。
对于NO-SQL,这些是满足性能需求的数据库。 SQL在这种情况下执行得很糟糕,有很多小写。我说脸颊很糟糕 - 它表现得很好但是当你扩展到数百万并发用户时,一切都会发生变化。我对没有sql的理解是它是一种非合理化格式,专为大量小型快速写入和读取而设计。使用这些网站的网站规模通常非常大。
好的 - 回复
我现在很幸运能够参加一个绿色的田野项目,所以我使用EF来生成我的模式。 在非绿地项目中,我使用sql脚本来更新我的表结构。至于在sql中实现表继承,一旦你知道这个概念就很容易了,它本质上是一对多的关系,它只有0-1。
我不会编写更新数据库结构的.net代码......听起来像是等待发生在我身上的灾难。
开始认为我误解了你在寻找什么。我发现数据库是第二天性的,因为我花了很长时间与他们在一起。
我没有找到对脚本管理一丝不苟的替代品。