2016-11-02 11 views
0

私はSpring MVCとHibernateによって構築されたSAAS製品を持っています。一般的にSAAS製品は、ユーザがテーブルに余分なフィールドを追加するように製品をカスタマイズすることを可能にする。
だから私は、テーブルにカスタムフィールドを作成するための柔軟性をユーザに与えたいと思っています。
これを達成するための実行可能なソリューションをすべて提供してください。
ありがとうございました。私のアプリケーションにカスタムフィールドを追加する

答えて

0

私はこれをリレーショナルデータベースに戻そうとしています。主な問題は、リレーショナルデータベースは物をテーブルに格納し、テーブルは実際に自由形式のデータをうまく処理しないということです。

XMLのような柔軟性のあるドキュメント構造を使用することもできますが、データベースには優れた機能がありますので、データベースを使用するアプローチについても考えてみましょう。

あなたはExtendedTable

の列(複合主キー)を持っているだろう「カスタムフィールド」テーブルを作成することができColumnNameに

いますが、(どこか

データを格納する必要があると思いますExtendedKey) DataItem

そして今、私たちは本当に厄介なビットに入ります。このデータにどのように制約を適用しますか?つまり、タイプはDataItemのは何ですか?一般的な解決法は、かなり複雑なもの(自由形式データベースの一種)です。うまくいけば、あなたは解決が必要な問題だけを解決するようにソリューションを制限することができます。

もう1つのアプローチは、独自の「列と値」拡張を埋め込んだXMLレコードを含む単一の「余分な」列を使用することですが、効率的な表を表示したい場合は、あらゆる分野のすべてのXML文書が理想的ではありません。

これらのアプローチのどちらも、既存のSQLクエリ言語ではうまくいかないため、独自のクエリ言語の構築を開始します。

私はあなたのテーブルの "と他の何かが必要かもしれない"セットのテーブルの下でそれらを掃除するのではなく、実際のデータ要件を見直すことをお勧めします。

+0

私は(ExtendedKey)DataItemアプローチのいくつかの垣間見る例を与えることができます.. –

0

あなたの要件は、NoSQLデータベース(MongoDBなど)の最適な使用例です。これらは、あなたがそれらを慎重に処理しない場合は非常に強力で、ケース内にあるDDL操作を伴うよう

は動的にアプリケーションにユーザーの要求に応じ、リレーショナルデータベーステーブル&列(スキーマの変更)を作成することは、ベストプラクティスではありませんアプリケーションのデータベース全体が一貫性のない状態になります。

+0

私はNoSqlを使用したくない、私はgr8を動作するMySQLがあります。以下のように(ExtendedKey)DataItemアプローチの例を挙げることができます –

+0

各行のデータサイズはどのくらいですか?それは巨大ですか? – developer

+0

あなたの質問を理解できませんでした –

関連する問題