私のアプリケーションのデータモデルには良い考え方があります。 ほとんどのスレッドは電子商取引製品に焦点を当てています。私のシナリオは多少異なります。単一テーブルの継承、EAVまたはNoSQL?
目標は、顧客から受け取ったアイテムを保管し、それらに報告することです。 最初のレポートは単純なリスト(これらはあなたのアイテムとそのキー/値のペアです)ですが、私はコレクション全体の将来のクエリの準備をしたいので、EAVは良いアプローチです。
各アイテムは(繰り返しの)タイプであり、各アイテムは柔軟な量のキーと値のペアを持ちます。 私たちは約15種類のアイテムタイプを持っており、成長する可能性はあまりありません。
キーと値のペアの量は4と20の間で低くなります(要件ごと)はアイテムタイプに基づいていませんが、そのアイテムはに属します。
明確にするために、顧客は、アイテムの状態を別の場所に保存したい場合や、代替IDを保存したい場合があります。それは本当に依存しています。 したがって、いずれのアイテムタイプもその顧客のすべてのキー/値を取得するため、私のセットにはNULL値が設定されている可能性が非常に高いです。それで私は考えます単一テーブル継承(NULL値を持つ)は受け入れ可能ですが、顧客が希望するキーの名前を決定するため、何らかのマッピングを使ってfield_1 field_2などにする必要があります。 どちらが私にはあてはまらないのですか?
顧客アイテム(およびそのキー/値)の集まりは、通常、20より大きく、< 500であるため、顧客あたりのデータセットは確かに巨大ではありません。
おそらく、実際に収集されたアイテムレコードを「文書」としてNoSQLデータベースに移動するのは、アプリケーション自体のためにMySQLでEAVを実行するのがよいアプローチです(Redis etすべて)を処理しますか?
これは、RDBMSで解決できなければならないことを複雑にしていますか?
私はこの解決策のように思われますが、確かに私の数字は非常に低いので、このhttp://backchannel.org/blog/friendfeed-schemaless-mysqlに出くわしました。
あなたの洞察をいただきありがとうございます。ポイント2に関して、私の問題は、どのような報告が必要なのか分かりません。今はEAVで完全に可能なリストで十分です。 NoSQLがSQLよりも優れたものを解決するかどうかは、私が心配している未知のシナリオです。基本的にはポイント3です.NoSQLを使用することは魔法の解決策ではないことを認識しています。後でいつでもその形式にエクスポートできると思います。 – MattW