在我真正了解它的名字之前,我已经在很多上下文中看到了 Entity Attribute Value。当不是将数据存储在数据库列中,而是“翻转”并拥有一个包含实体、属性、值列的表,并且每条数据成为该表中的一行时,经常会出现这种技术。有时它也被称为“开放架构”。
它对某些事情有利,对其他事情不利。这个 wikipedia article 对它背后的理论有很好的讨论。
这似乎是一种应该使用框架或引擎或 NoSQL 数据库或通用软件工具来构建和支持它的常用技术。
那么,你知道吗?我对 Microsoft 堆栈(.Net、SQL Server 等)以及其他技术堆栈特别感兴趣。
例如,这是 build an ASP.NET EAV engine 的一个项目,这正是我正在寻找的,但显然从未开始。
最佳答案
如果您能忍受 NoSQL 数据库的缺点,那么接近 EAV 模式的最佳方法是使用 NoSQL 替代方案,如 CouchDB 或 MongoDB。这些数据库提供“无模式”设计,允许每一行都有自己的模式。使用传统的 RDBMS 执行 EAV 会带来麻烦,因为查询变得非常困难,并且数据集越大,性能就会受到影响。
我过去成功使用的另一种方法是将 RDBMS 与 NOSQL 变体(MySql 和 MongoDB)相结合。我使用 MySQL 来存储 EAV 数据(获得事务完整性),我使用 MongoDB 作为报告存储来解决 EAV 模型的查询问题。
关于c# - 实体属性值 (EAV) 框架?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4214018/