1

XMLドキュメントをデータベースに保存する必要がある理由を説明する必要があります。

良い面:

  1. 個々の要素をテーブルに細断し、列に帰属させる努力はありません
  2. テーブルはXML内に自己完結しているため、テーブル間の関係を維持するための努力は必要ありません。
  3. XMLを共有するシステム間で移植可能
  4. 必要に応じて、文字通りすべてのDBMSは、リレーショナルエンティティとしてXMLをクエリするXML操作をサポートします。

欠点:

  1. RDBMSカウンター部分よりもかなり大きいネットワークペイロード。
  2. クライアントアプリケーションに、それらを使用可能なコンポーネントに細断処理す​​るように要求します。

これらの正当化は有効ですか?誰もがこれ以上考えることができますか?

4

3 に答える 3

4

決定的なプロコンリストは実際にはありません-それはあなたがやろうとしていることに依存します。しかし、ここにあなたが考えるためのさらにいくつかがあります:

  1. すべてのSQLデータベースがXMLxpath(beyond blob like '%xxx%')をサポートしているわけではありません。おそらく、XMLサポート関数(つまり、Mysql 4)を持たない古いバージョンのデータベースで立ち往生しています。Sqliteやhsqlなどの軽量のSQLデータベースもこのキャンプに分類されます。
  2. データベースでXMLを検索できる場合でも、最適ではありません。XMLのSQL検索では、SQLサーバーに組み込まれている検索の最適化(つまり、インデックス)を利用できません。
  3. データベースによっては、データベースでXMLドキュメントを使用する場合も、SQLサーバーの検証およびタイプ機能を利用できません。たとえば、OracleはXMLスキーマ検証を実行できますが、Mysqlが実行できるとは思いません。
  4. 実行できるクエリのパフォーマンスは、標準の列クエリとは比較されません。
  5. データベースサイズ。XMLをデータベースに保存すると、XMLはさらに大きくなります。圧縮することはできますが、クエリを実行するのは困難/不可能です。
  6. 正規化の問題が関連する問題になる可能性があります。SQLを使用してXMLをクエリすることは、ある時点では期待できませんが、後で、あるフィールドが実際に必要であると判断されます。目的のパフォーマンスを得るために、そのフィールドをXMLから取り出して実際の列に入力する必要がある場合があります。この場合、データベースに冗長な情報があります。

長所と短所は、実際に何を保存するか、そしてその目的によって異なります。

  1. 本質的にバイナリ/構成情報をどこかに貼り付ける必要があり、何らかの理由でSQLデータベースに貼り付けることを好む場合は、クエリに関する考慮事項は関係ありません。その場合、重要な問題はスペースとそれを最小化する方法(つまり、圧縮)に関係します。
  2. XMLを定期的に検索する必要がある可能性がある場合は、クエリが遅くなり、前述の冗長性の問題が発生するリスクがあります。その場合、長期的な設計を事前に慎重に検討する必要があります。このデータをXMLとして保存する必要があるのでしょうか。そのデータからXMLを構築する方が良いでしょうか?
于 2012-04-14T13:25:23.807 に答える
3

どちらの場合も長所と短所があり、使用シナリオによって異なります。

XML自体として保存することの主な欠点は、特定のデータのクイック検索を実行できないことです。検索を実行するには、すべてのXMLファイルを取得して解析する必要があります。

私たちのプロジェクトの1つで同様の状況に遭遇しました。それについて話し合った後、私たちは中立的なアプローチを取りました。すべての主要な情報(すばやく照会する必要がある情報)は、関連するテーブルに格納されていました。また、XMLも保存しました。ただし、XMLをそのまま保存する代わりに、XMLをディスクに保存し、そのファイルパスをテーブルで使用しました。

于 2012-04-14T11:53:25.617 に答える
3

あなたのコメントを議論する:

  1. 個々の要素を保存しないということは、それらに制約を適用しないことも意味します
  2. 繰り返しますが、テーブル間の制約は保存されません
  3. ターゲットシステムが同じスキーマを確認した場合にのみ移植可能です。
  4. はい。ただし、パフォーマンスは異なります。
于 2012-04-14T12:43:34.507 に答える