我目前正在重新设计我们应用程序的数据系统。基本上,它的设计是让人们可以添加他们想要的所有自定义字段,只有一些固定/始终存在的字段。
我们当前的设计给我们带来了很多维护问题。我们在运行时动态地向数据库中添加列以适应每个字段。我们必须有一个元表和其他琐碎的东西来维护所有这些动态列。
现在我们正在考虑使用EAV,但似乎也没有好多少。基本上,我们有许多不同类型的字段,所以会有StringValues、IntegerValues等表...这使得情况更糟。
我在想,在数据库中使用JSON或XML blob可能是一个更好的解决方案,特别是因为在大多数情况下,当我们从这些表中检索任何内容时,我们需要整个行。问题是我们还需要能够为这些数据创建报告...没有什么解决方案真的让自定义查询变得容易。而且在运行报告时,跨这样一个blob数据库进行搜索肯定会是性能噩梦。
每个“行”需要与之关联的属性/列数量从大约15到100(可能更多)不等。
我们正在使用SQL Server 2008,我们的应用程序与数据库的接口是一个C# Web应用程序(因此是ASP.Net)。
你认为呢?使用EAV还是blobs或完全不同的东西?(另外,是的,我知道像MongoDB这样的无模式数据库在这里会很棒,但我无法说服我的老板使用它)
我们当前的设计给我们带来了很多维护问题。我们在运行时动态地向数据库中添加列以适应每个字段。我们必须有一个元表和其他琐碎的东西来维护所有这些动态列。
现在我们正在考虑使用EAV,但似乎也没有好多少。基本上,我们有许多不同类型的字段,所以会有StringValues、IntegerValues等表...这使得情况更糟。
我在想,在数据库中使用JSON或XML blob可能是一个更好的解决方案,特别是因为在大多数情况下,当我们从这些表中检索任何内容时,我们需要整个行。问题是我们还需要能够为这些数据创建报告...没有什么解决方案真的让自定义查询变得容易。而且在运行报告时,跨这样一个blob数据库进行搜索肯定会是性能噩梦。
每个“行”需要与之关联的属性/列数量从大约15到100(可能更多)不等。
我们正在使用SQL Server 2008,我们的应用程序与数据库的接口是一个C# Web应用程序(因此是ASP.Net)。
你认为呢?使用EAV还是blobs或完全不同的东西?(另外,是的,我知道像MongoDB这样的无模式数据库在这里会很棒,但我无法说服我的老板使用它)