私は現在、データストレージ用EAV modelを使用するプロジェクトをリファクタリングする使命を帯びてきました。いくつかの実装ではリファクタリングEAVモデル化されたデータは、
、メインテーブルは、複数の行を保持しています。あなたが想像することができるように、私はこれを嫌悪とみなします。
リファクタリングは、あなたの緯度と長いがVARCHARフィールドのカンマ区切りのテキストとして格納されている場合、実際に動作しない、空間検索を実行する必要性によって駆動さ...しかし、私は脱線されます。
プロジェクトの性質上、事前に正規化されたテーブルの静的なセットを作成することは問題になりません。新しいフォームのフィールドの数が不明で、ドロップダウンのオプションの数が不明な動的フォームビルダーと考えることができます。
私はフィールドのディクショナリを維持し、動的に作成されたテーブルセットを管理する "DynamicTable"クラス。キャッシュはすでに(memcachedを使用して)非常にうまく実装されているため、スキーマが変更されたとき(最初のコミット後はまれです)およびリブート時(さらにまれに)に辞書を照会する必要があります。基本さえ何かを肉付けで
私の最初の試みは、私が何をしたいのフルスケールを実現作っている、と同様のプロジェクトのための私の検索はかなり無益されています。
誰ができます:
- がmycurrentアプローチを称賛し、私に幸運を願っています。
- 必ずしも容易ではない場合でも、より良い代替アプローチを推奨します。
- 私は同様の目標を達成する(私の検索利回りは何も!)
乾杯のみんなで見ることができます任意のプロジェクトをオススメ!
EAVに関連する問題は、テーブル内の行数ではありません。しかし、主に整合性と制約を実施する方法。 –
EAVを乱用するのではなく、これを文書データベース(「nosql」を意味する)を使用して考えましたか? – Charles
@Charles:私はMongoDBとCouchDBについて簡単に見ましたが、顧客に別のDBサーバーをインストールすることがどれだけ実行可能か、またこれらのオプションを使用して開発するための学習曲線があるかどうかはわかりません。 – Leigh