2010-11-18 17 views
3

私は実際にその名前が何であるかを学ぶ前に、多くの文脈でEntity Attribute Valueを見ました。そのテクニックは、データベースの列にデータを格納するのではなく、「反転」し、Entity、Attrbute、Valueの列を持つテーブルを持ち、各データがそのテーブルの行になるときに、しばしば失敗することがあります。ときには「オープンスキーマ」とも呼ばれます。エンティティ属性値(EAV)フレームワーク?

他のものには悪いことがいくつかあります。このwikipedia articleには、その背後にある理論についての良い議論があります。

フレームワーク、エンジン、NoSQLデータベース、またはそれを構築しサポートする一般的なソフトウェアツールが必要です。

だから、あなたは何か知っていますか?私は特にMicrosoftのスタック(.Net、SQL Serverなど)だけでなく、他のテクノロジスタックにも興味があります。

たとえば、build an ASP.NET EAV engineというプロジェクトがありますが、それは私が探しているものですが、明らかに始まったことはありません。

答えて

6

NoSQLデータベースの欠点を抱えていれば、EAVパターンにアプローチする最善の方法は、CouchDBやMongoDBのようなNoSQLの代替方法です。これらのデータベースは、各行が独自のスキーマを持つことを可能にする「スキームレス」設計を提供します。伝統的なRDBMSでEAVを実行すると、クエリが非常に困難になり、データセットが大きくなるにつれてパフォーマンスが低下するため、問題を抱えています。

私が過去にうまく使用したのは、RDBMSとNOSQLの亜種(MySqlとMongoDB)を組み合わせたものです。私はMySQLを使用してEAVデータを格納し(トランザクションの整合性を得る)、MongoDBをレポートストアとして使用して、EAVモデルの問合せ問題を回避します。

0

私はthis blog post経由で見られるものとボールの転がりを得るでしょう:

SQL ServerのEAVフレームワークの初期のベータ版:

http://eav.codeplex.com/
「とSQL ServerのサンプルEAVパターン:テーブル部分的なデータの型付け、更新可能なビュー(通常のSQLテーブルのようなもの) "

ダウンロードするSQLスクリプトをいくつか提供します(here)。

1

SQL-XMLにlibを入れておくことはできますが、.NETでde/serializationを実行してからX-LINQを起動することもできます。

パフォーマンスは明らかに大きな問題になります。

関連する問題