【问题标题】:Entity Attribute Value (EAV) frameworks?实体属性值 (EAV) 框架?
【发布时间】:2011-05-11 23:18:20
【问题描述】:

在我真正了解它的名字之前,我已经在很多情况下看到了Entity Attribute Value。当您“翻转”它并拥有一个包含实体、属性、值列的表并且每条数据都成为该表中的一行时,这种技术通常会突然出现,而不是存储在数据库列中。有时它也被称为“开放架构”。

它对某些事情有利,对其他事情不利。这个wikipedia article 很好地讨论了它背后的理论。

这似乎是一种经常使用的技术,应该有框架或引擎或 NoSQL 数据库或通用软件工具来构建和支持它。

那么,你知道吗?我对 Microsoft 堆栈(.Net、SQL Server 等)特别感兴趣,但也对其他技术堆栈感兴趣。

例如,build an ASP.NET EAV engine 的一个项目正是我正在寻找的,但显​​然从未开始。

【问题讨论】:

    标签: c# sql-server frameworks entity-attribute-value


    【解决方案1】:

    如果您可以忍受 NoSQL 数据库的缺点,那么处理 EAV 模式的最佳方法是使用 NoSQL 替代方案,例如 CouchDB 或 MongoDB。这些数据库提供“无模式”设计,允许每一行都有自己的模式。使用传统的 RDBMS 进行 EAV 是自找麻烦,因为查询变得非常困难,而且数据集越大,性能就会受到影响。

    我过去成功使用的另一种方法是将 RDBMS 与 NOSQL 变体(MySql 和 MongoDB)结合起来。我使用 MySQL 存储 EAV 数据(获得事务完整性),并使用 MongoDB 作为报告存储来解决 EAV 模型的查询问题。

    【讨论】:

      【解决方案2】:

      您可以将其存储在 SQL-XML 中,但您可以在 .NET 中进行反序列化/序列化,然后使用 X-LINQ。

      显然,性能也将是一个巨大的问题。

      【讨论】:

        【解决方案3】:

        我会用我通过this blog post 找到的一个来搞定:

        SQL Server EAV 框架的早期测试版:

        http://eav.codeplex.com/
        “用于 SQL Server 的示例 EAV 模式具有:表和索引、部分参照完整性、部分数据类型、可更新视图(如普通 SQL 表)”

        提供一些SQL脚本下载,here

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-05-02
          • 2011-07-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-29
          • 2013-01-24
          • 2013-09-06
          相关资源
          最近更新 更多