2010-11-18 2 views
3

나는 그 이름이 무엇인지를 실제로 알기 전에 많은 문맥에서 Entity Attribute Value을 보았습니다. 데이터베이스 컬럼에 데이터를 저장하는 대신 '뒤집어서'Entity, Attrbute, Value 컬럼을 가진 테이블을 가지고 각각의 데이터 조각이 그 테이블에서 하나의 행이 될 때 그 기술은 종종 복잡해집니다. 때로는 '오픈 스키마'라고도합니다.EAV (Entity Attribute Value) 프레임 워크?

다른 것들에는 좋고, 어떤 것에는 좋음. 이 wikipedia article에는 그 이론에 대한 좋은 토론이 있습니다.

프레임 워크, 엔진 또는 NoSQL 데이터베이스 또는이를 구축하고 지원하는 일반적인 소프트웨어 도구가 있어야하는 일종의 자주 사용되는 기술처럼 보입니다.

그래서 알고 계십니까? 저는 특히 Microsoft 스택 (.Net, SQL Server 등)뿐만 아니라 다른 기술 스택에도 관심이 있습니다.

예를 들어 여기 정확히에 대한 프로젝트가 있습니다.하지만 분명히 시작된 적이 없습니다.

답변

6

NoSQL 데이터베이스의 단점을 극복 할 수 있다면 EAV 패턴에 접근하는 가장 좋은 방법은 NoSQL 대신 CouchDB 또는 MongoDB를 사용하는 것입니다. 이 데이터베이스는 각 행이 자체 스키마를 가질 수있는 "스키마가없는"디자인을 제공합니다. 전통적인 RDBMS로 EAV를 수행하면 쿼리가 매우 어려워지고 성능이 높아질수록 데이터 집합이 커질 수 있으므로 문제를 묻습니다.

내가 과거에 성공적으로 사용한 대안은 RDBMS와 NOSQL 변형 (MySql 및 MongoDB)을 결합하는 것입니다. MySQL을 사용하여 EAV 데이터를 저장하고 (트랜잭션 무결성 확보) MongoDB를보고 저장소로 사용하여 EAV 모델의 쿼리 문제를 해결합니다.

0

내가 this blog post를 통해 발견 한 롤링 볼을 얻을 것이다 :

SQL 서버 EAV 프레임 워크에 대한 초기 베타 :

http://eav.codeplex.com/
"와 SQL Server에 대한 샘플 EAV 패턴 : 테이블 부분 참조 무결성, 부분 데이터 유형 지정, 업데이트 가능보기 (일반 SQL 테이블과 유사) "

다운로드 할 일부 SQL 스크립트를 제공합니다 (here).

1

SQL-XML에서 lib 디렉토리를 저장할 수는 있지만 .NET에서 de/serialization을 수행 한 다음 X-LINQ aginst로 수행 할 수 있습니다.

성능 또한 엄청난 문제입니다.