c# - 实体属性值 (EAV) 框架?

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

我看过 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/

相关文章:

c# - 在 ASP.NET Core 中搭建现有数据库(Scaffold-DbContext)

c# - 如何将 ASP Net Membership Provider UserId 保存到另一个 sql 表中?

c# - visual studio 2010 c# 单元测试

c# - Linux中是否有系统API来提供对文件的原子写操作

sql-server - MSSQL 数据库清理 - 如何查找未使用的对象(表、 View 、过程、函数)

css - Uikit 3.1.6 中的响应式导航栏

SQL 分组和某个日期范围内未清项目的运行总计

c# - 使用相同的 SqlConnection 对 SqlCommand.BeginExecuteNonQuery 的多个并发调用

ios - 从哪里获得适用于 iOS 5 的 CoreTelephony.framework

java - 简单的 Java Web 框架