web-dev-qa-db-ja.com

データベースEAVの長所/短所と代替案

私は、ユーザー定義のフィールドと値を許可する(無制限の数を許可する)データベースソリューションを探していました。一見、EAVは適切に見えましたが、読んだ後はもうわかりません。

EAVの長所と短所は何ですか?

ユーザー定義の属性/フィールドおよび値を許可する代替のデータベースメソッドはありますか?

32
Nic Hubbard

これは網羅的な答えとは見なされませんが、トピックに関するいくつかのポイントです。

質問にも[sql]タグが付けられているので、一般的に、 リレーショナルデータベース[〜#〜 ] eav [〜#〜] モデル。 SQLでEAVモデルを設計することはできますが、リレーショナルデータベースがもたらす多くの利点を犠牲にする必要があります。参照整合性を適用したり、値にSQLデータ型を使用したり、必須属性を適用したりできないだけでなく、非常に基本的なクエリでさえ記述が困難になる可能性があります。実際、この制限を克服するために、いくつかのEAVソリューションは、関連するテーブルと結合するのではなく、データの重複に依存しています。これには、想像できるように、多くの欠点があります。

「無制限の数の属性を許可する」というスキーマレス設計が本当に必要な場合、最善の策はおそらく NoSQL ソリューションを使用することです。リレーショナルデータベースと比較したEAVの弱点は、NoSQLの代替手段にも当てはまりますが、従来のSQLデータベースでは実現が難しい追加機能が提供されます。たとえば、通常、NoSQLデータストアは、ある種のスケーラビリティの問題を解決するように設計されており、スケーリングを困難にする機能を意図的に削除したため、リレーショナルデータベースよりもはるかに簡単にスケーリングできます。

多くのクラウドコンピューティングプラットフォーム( AmazonGoogleMicrosoft など)は、EAVモデルに基づくデータストアを備えています。属性の数は、特定のエンティティに関連付けることができます。アプリケーションをクラウドにデプロイすることを検討している場合は、これをビジネス上の利点と技術的な利点の両方と見なすことができます。これは、大手ベンダー間の激しい競争により、価値とコストの比率が非常に高いレベルに押し上げられているためです。機能を継続的に押し上げ、財務コストと実装コストを押し下げることによって。

30
Daniel Vassallo

Posgtres hstoreを見てください http://www.postgresql.org/docs/9.0/static/hstore.html これは、ほとんどの欠点なしに、あなたが望むことを正確に実行します

2
rqmedes

Streams Platform は、Streams実際にはドメインモデル)、FieldsおよびAssignmentsエンティティ。

0
Piterden