2011-08-15 12 views
1

私は中規模のビジネスWebアプリケーションを構築しています。データはMySQLデータベースに保存されています。Sql DB駆動型Webアプリケーションアーキテクチャの質問

私は、特定の選択可能な「ウィジェット」をそのアプリケーションに追加する方法を考えています(通貨ウィジェット - ウェブアプリが見えるときにユーザーが指定した通貨を表示します)。ウィジェットには共通の基盤がないため、ウィジェットのデータとユーザーごとの設定を保存します。

たとえば、通貨ウィジェットの設定は天気ウィジェットとはまったく異なります。 希望する通貨のリストが必要です。天気の目標位置が必要です。

私はuserId、widgetId、widgetDataを含むdbテーブルの "widgetData"列にエンコードされたすべてのウィジェットの設定データを保持することで、上記の問題を解決すると考えました。 エンコードの方法としてJSONを選択しました。ユーザーがそのページを読み込もうとするたびに、その設定をデコードして、その設定に基づいてユーザーに必要なデータを渡す必要があります。

ウィジェットの実際のデータを保存する場合、共通のベース自体を持たない場合も同じです。

次回はNO-SQLデータ構造を使用してこの問題を解決できたらうれしいですが、現在のプロジェクトではそうではありません。

+0

あなたの質問は何ですか? – Mat

答えて

1

Entity Attribute Value database modelは、このシナリオで非常に役に立ちます。

標準のSQLデータストレージ内で動作するため、JSONやXMLなどの形式よりはるかに柔軟です。

1

私はEAVソリューションを投票しました。これはEAVソリューションを使用する正当な理由の1つですが、恋に落ちないためです。 EAVの利点は、ほとんどのエンジンがJSONサポートを持っていない間に、クエリーを行うためにSQLでクエリを書くことができる程度にデータベースがネイティブであることです(すべてのウィジェットにいくつかの設定がないことを見つけて追加します)。一方

、あなたが構造化データを含む列の中に照会する/必要性をしたい場合は、XMLは(今のところ)JSONより良いオプションである:あなたのウィジェットがでJavascriptを介して、レンダリングされた場合http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html#function_extractvalue

0

は、あなたのソリューションは完璧です。 widgetDataはJSON文字列のままです.JavascriptではJSON.parse()を使用してオブジェクトに変換してレンダリングし、JSON.stringify()を文字列に戻してサーバーにポストバックします。