どの欠点を克服に報告からEAVデータベース?
-
22-09-2019 - |
質問
の主要な問題におけるエンティティ属性値のデータベースのデザインアプリケーションですべてを見る関連できるクエリのデータを効率的にしています。もっと詳しい情報を読み込みまの戒の実施EAVによりこれらの問題の共通性の照会/報告のほとんど全ての用途.
私は現在、設計システム分野の事業体は知られていないのでデザイン/コンパイル時間によって定義されるエンドユーザーのシステム。EAVされるのではと思いこの条件では問題を読んで、私は躊躇の実施にともありますか重の報告要件はこのシステムです。I 考え んだことなポーズでの質問にうです。
その代表的な標準化データベース(OLTP)少ない常に最良のオプションの運営報告書、良い練習ができるように"報告"のデータベース(OLAPのデータを正規化したデータベースにコピーされ、インデックスを幅広く、denormalizedを容易に照会.が同じ考えするライブラリを用いた、欠点のEAV。
の下振れんの増加の複雑なデータを転送するからEAVデータベースを報告する場合がありますのでと変更は、テーブル、レポートデータベースとして新しい分野で定義されてEAVデータベースです。そのほとんど不可能であり、そうする許容トレードオフの柔軟性の向上にEAVデザイン。この下振れるものが存在するを利用した場合、SQLデータストア(Apache couchdbが持つなど)のデータを保管すべての標準報告ツールが期待できる"と回答したSQLのバックエンドをクエリす。
の問題EAVシステムの多くの場合、別の報告データベースの照会?
編集:のコメントです。の一つの重要なもののシステムのようにすることんみつを使用EAVの主体すべてまかなえるわけではないが、システム。
全体の概要、システムができるプルデータから複数の異なる源は知られていないうえに、収縮のデータを一部の"知"のデータは特定の団体をいう。その"場"を取り扱っては、多価んも必要なトラックの歴史。正規化されたデザインするということで1テーブル当たりの分野をタのような痛います。
こちらのテーブルスキーマ、サンプルデータにんに送る手紙の文法等おかしな点の指明らからどうにかこの点でも):
EAVテーブル
Person
-------------------
- Id - Name -
-------------------
- 123 - Joe Smith -
-------------------
Person_Value
-------------------------------------------------------------------
- PersonId - Source - Field - Value - EffectiveDate -
-------------------------------------------------------------------
- 123 - CIA - HomeAddress - 123 Cherry Ln - 2010-03-26 -
- 123 - DMV - HomeAddress - 561 Stoney Rd - 2010-02-15 -
- 123 - FBI - HomeAddress - 676 Lancas Dr - 2010-03-01 -
-------------------------------------------------------------------
報告テーブル
Person_Denormalized
----------------------------------------------------------------------------------------
- Id - Name - HomeAddress - HomeAddress_Confidence - HomeAddress_EffectiveDate -
----------------------------------------------------------------------------------------
- 123 - Joe Smith - 123 Cherry Ln - 0.713 - 2010-03-26 -
----------------------------------------------------------------------------------------
正規化したデザイン
Person
-------------------
- Id - Name -
-------------------
- 123 - Joe Smith -
-------------------
Person_HomeAddress
------------------------------------------------------
- PersonId - Source - Value - Effective Date -
------------------------------------------------------
- 123 - CIA - 123 Cherry Ln - 2010-03-26 -
- 123 - DMV - 561 Stoney Rd - 2010-02-15 -
- 123 - FBI - 676 Lancas Dr - 2010-03-01 -
------------------------------------------------------
の"自信"分野はこちらを利用して生成した論理できない簡単に表現場でのすべての)用のSQLで私が最も共通の操作以外に挿入し、新しい価値が引に関するデータをすべて接続する人のためのすべての分野での記録を報告する。これは実際に や のEAVモデルとしてできませシングルモードです。に正規化されたデザイン、結局どうしていくべきなのかについて1クエリの一分野を避ける大規模な問いから参加します。
解決
短い答え - 。はい、レポートデータベースは、EAVデータモデルからの報告の問題を解決するための合理的なアプローチです。
私は、エンドユーザーにスキーマとEAVモデルを使用して保存されたデータの両方で、独自のデータモデルを定義するための完全な自由を許さ情報管理ソリューションでの作業数年を過ごしました。興味深いことに、この製品は、メタスキーマは、(例えばグラフ、等を投影を実行するために、ビューをオブジェクトナビゲーションを提供するために)報告要件を満たすために使用されるオブジェクト提供しました。これにより、エンドユーザーは、彼らが最初のインスタンス内のデータモデルを構築するために使用されていたものと同じ用語や概念を使用してクエリを自由に定義したことを意味しました。報告の行為は、これらの定義をナビゲートして、データセットを計算し、そしてそれは、リレーショナルデータであるかのように、伝統的なレポート作成ツールに超える結果を手に本質的でした。
このアプローチの強みの一つは、ユーザーが再利用およびレポート機能にも適用することができると仕事ができる何かにEAVモデルを変換するための場所ではすでにいたのと同じメカニズムということでした。
他のヒント
は、この方式では、まず我々は、ユーザーが使用することを意図一切関係なく、その構造の、と関係なく、将来のあらゆる種類のデータを保存することができますシステムを思い付きます。そして、レポートを取得するには、それの時間は、我々は我々が持っているかを把握する必要があり、そしてどのようにそれは私たちが必要なものに関するものである。
あなたは明確に「このスキームであること」に問題の性質を属性のでEAVに問題が本当にのはのようなEAVによるものであるかのように。
、それは本当に私には思えます実際には、それを考えるに来る:ちょうど彼らの関係変数を定義するにユーザーを可能にするシステムと同等である「ユーザーが何あらゆる種類のデータを保存することができますシステム」。しかし、そのシステムのどの部分は、ユーザーが各属性に制約を定義することができますか?おっと、EAVの観衆は、データ管理のそれほど重要でない側面を見逃しているようだ、それは...
そうですEAVの問題点は、以下のようなEAVによるものではありません。これは、設計やデータ要件は本当に何であるかを理解せずにデータベースを構築し、どのような論理構造のデータは、これらの要件を満たすために持っている必要がありますが原因です。 EAV、ユーザーが自分のデータを設計することができます他のシステムは、その頭の上にこれをオンにします。
は、この方式では、まず我々は、ユーザーが使用することを意図一切関係なく、その構造の、と関係なく、将来のあらゆる種類のデータを保存することができますシステムを思い付きます。そして、レポートを取得するには、それの時間は、我々は我々が持っているかを把握する必要があり、そしてどのようにそれは私たちが必要なものに関するものである。
それで頑張ってます。
私はMASSIVE EAVデータベースからの時間照会のかなり大きな金額を費やすEAVても問題はありません。 EAVからの報告と言う誰もが1〜2の問題を抱えている困難または不可能である、どちらか彼らは非常に設計が不十分なEAVシステムを持っているか、彼らは1からの問合せにどのように理解していません。あなたはそれを数回やった後、EAV DBからの素敵なレポート可能なデータを取得することは非常に簡単です。レポートデータベースか何かの特別な、ちょうどいくつかの良いクエリのための必要はありません。
あなたはEAV DBを構築している場合は、時間のA LOTはそれを設計費やし、設計するか作るか、またはあなたのアプリケーションを破ると、それは設計が不十分な1で修正または対処しようとして悪夢になります。