我见过实体属性值 http://en.wikipedia.org/wiki/Entity-attribute-value_model在我真正知道它的名字是什么之前,我已经在很多情况下了解过它。当您不是将数据存储在数据库列中,而是“翻转”它并拥有一个包含实体、属性、值列的表,并且每条数据都成为该表中的一行时,经常会出现这种技术。有时它也被称为“开放模式”。
它对某些事情有利,对另一些事情不利。这维基百科文章 http://en.wikipedia.org/wiki/Entity-attribute-value_model对其背后的理论进行了很好的讨论。
这似乎是一种经常使用的技术,应该有框架、引擎、NoSQL 数据库或通用软件工具来构建和支持它。
那么,你知道吗?我对 Microsoft 堆栈(.Net、SQL Server 等)特别感兴趣,但也对其他技术堆栈感兴趣。
例如,这是一个项目构建 ASP.NET EAV 引擎 http://code.google.com/p/entity-attribute-value-engine/这正是我正在寻找的,但显然从未开始。
如果您可以忍受 NoSQL 数据库的缺点,那么实现 EAV 模式的最佳方法是使用 CouchDB 或 MongoDB 等 NoSQL 替代方案。这些数据库提供“无模式”设计,允许每一行都有自己的模式。使用传统 RDBMS 执行 EAV 会带来麻烦,因为查询变得非常困难,并且数据集越大,性能就会受到影响。
我过去成功使用的另一种方法是将 RDBMS 与 NOSQL 变体(MySql 和 MongoDB)结合起来。我使用 MySQL 来存储 EAV 数据(获得事务完整性),并使用 MongoDB 作为报告存储来解决 EAV 模型的查询问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)