1

投票メカニズム用のデータベースの選択を求めるトピックをたくさん見てきましたが、私の入力は少し異なります。複数のフィールド/ラジオボタンまたは上記の組み合わせが可能なGUIを含むアプリケーションがあります。GUIは修正されていません。送信されたフォームに基づいて、回答XMLが動的に生成されます。

したがって、フォームがある場合、同じフォームを送信する10000人の異なる人がいる可能性があります。そして私は10000の異なるフォームを持っています(数は増加します)。

現在、次の2つのオプションがあります。すべてのxmlをデータベースにそのまま保存するか(リレーショナルデータベースまたはmongodbのようなnosqlデータベースを使用することを選択していません)、xmlを解析してすべてのフォームのテーブルを作成します。そうすると、テーブルの数は膨大になります。

ここで、基本的に特定のフォーム用に生成されたすべてのxml、つまり10000 xmlを調べ、送信された回答を抽出する投票メカニズムを構築する必要があります(注:1つのフォームに複数の回答要素を含めることができるため、xmlは複雑です)。投票して、同じ答えを出した人の数を見つけてください。

私の質問:

  1. リレーショナルデータベースまたはNOSQL(MongoDB / Redisまたは同様のもの)を使用する必要がありますか?
  2. xmlドキュメントをデータベースにそのまま保存する必要がありますか、それとも解析してテーブルに変換して保存する必要がありますか?私が従うことができる他のアプローチ。

現在、開発にJAVA/J2EEを使用しています。

4

2 に答える 2

1

可変構造のデータを格納する方法に関する質問であれば、ドキュメント データベースが非常に便利です。スキーマがないため、rdbms 列のメンテナンスに問題はありません。

論理的には、この方法はリレーショナル データベースに xml を格納するのとよく似ています。違いは、rdbms アプローチでは、各データベース リーダーに特別な xml 解析レイヤーが必要なことです。(また、xml については、なぜリレーショナル データベースに XML を格納して操作することを選択したのでしょうか?を参照してください。)

一般に、単一のデータベース クライアントを使用する予定の場合は、xml/rdbms を使用できます。

ところで、xml を保存する代わりに、rdbms を別の方法で使用することもできます - 「一般的な」構造を定義します。たとえば、「エンティティ (名前、タイプ、ID)」テーブルと「属性 (エンティティ ID、名前、タイプ、値)」テーブルを作成できます。

于 2012-05-22T08:42:33.100 に答える
0

XML を DB に保存すると、パフォーマンスと保守性に対する柔軟性が得られます (特に複雑で深くネストされた XML 構造では、xpath などを使用した XML 解析は冗長になり、エラーが発生しやすくなります)。

XML ごとにテーブルを保存すると、パフォーマンス、使いやすさ、柔軟性が向上します。

ハイブリッド アプローチを選択します。XML を一般的な XML 構造として rdbms テーブルに格納します (回答の 1 つに示されているように)。このようにして、テーブルの数を減らし (複雑さを軽減し)、XML 解析のパフォーマンスの問題をすべて回避します。

于 2012-05-22T11:05:49.347 に答える