6

私たちのビジネスでは、毎日何千もの XML ファイルを受け取り、処理する必要がありますが、これらのファイルはすべて同じ形式です。これらのデータをオラクル テーブルに格納し、これらのデータの階層関係を確保してから、従来の SQL を使用してクエリを実行し、さらに分析を行うことができます。それを行う最善の方法は何ですか?XML DB は正しい選択ですか?

アップデート:

現在、構造化ストレージにデータを格納したXML DBの利用を考えています。したがって、注釈を使用して XML スキーマを定義できることは理解しており、関連する手順も理解していますが、次の質問に対する確認済みの回答を得たいと考えています。

  1. 1 つの XML スキーマにアノテーションを付けて、親子関係の複数のテーブルを作成できますか? オブジェクトではなく、リレーショナル テーブルにデータを格納したいと考えています。
  2. これらすべてのテーブルの主キー、外部キーを定義できますか? Oracle がこれらのテーブルの親子関係をどのように維持しているかは、私にはよくわかりません。
  3. 誰かが私に良い例を示すことができますか?
4

2 に答える 2

12

間違いなく XMLDB から始めたいと思うでしょう。

XMLDB は、それ自体に含まれる特徴と機能の全世界です。

簡単に言うと、XMLDB および XMLTYPE データを使用した 3 つのストレージ オプションがあります。

以下を保存できます。

1.) CLOB データ型へ。これを行うと、XML はデータベースにそのまま残り、LOB になります。インデックスを作成したり、検索したりすることはできません。データベースはビットバケットであり、XML を保存します。

2.) BINARY XML: これは、11gR2 で導入された最新のオプションです。これにより、XML がトークン化されて圧縮され、エンコードされたバイナリ形式で保存されます。ここでの利点は、Oracle Text および XMLINDEX ドメイン索引を使用してコンテンツを索引付けおよび検索できることです。これは、私が最も経験を積んだオプションです。11gR2 データベースには、平均サイズが約 12k の 10 億のドキュメントが保存されています。それは私たちにとって本当にうまくいっています。

3.) XML からリレーショナル マッピング: リレーショナル スキーマを定義してデータを XML スキーマに格納し、XML 要素をどのリレーショナル テーブルおよびフィールドにマップするかを定義します。取り込み時に、XML は分解され、従来のリレーショナル モデルに格納されます。その後、従来のデータベースと同様に、検索、並べ替え、インデックスを作成できます。

どの XML ストレージ モデルを選択するかは、何をしたいかによって異なります。

Oracle XMLDB フォーラムで質問してみてください。それはかなり活発で、私よりもはるかにこのテーマに精通している人々が何人かいます. https://forums.oracle.com/forums/forum.jspa?forumID=34

それが役立つことを願っています。

アップデート 1 への返信:

バイナリ XML ストレージ オプションの経験しかありません。申し訳ありません。OTN で XMLDB サンプル コードを確認すると役立つと思います。

参照してください:

http://www.oracle.com/technetwork/indexes/samplecode/xmldb-sample-523617.html

于 2012-05-31T22:23:29.593 に答える
2

良い本があります。私はそれを使用し、すべての基本的な質問を解決するのに役立ちました。Oracle 11gについてですが、12cでも使えます。

それは「Building Oracle XML DB Applications」と呼ばれています。私は、それを購入して、読んで試すために 2 日間予約することをお勧めします。

于 2015-08-30T13:45:31.750 に答える