2

私は XML データベースの初心者で、特に Marklogic の仕組みを学ぼうとしています。これらの質問があまりにも素朴または明白である場合は、お詫び申し上げます。

私がやりたいのは、MongoDB スタイルのドキュメント参照を Marklogic に実装することです。これは、それ自体がドキュメント指向のデータベースである後者にパターンが非常にうまく適用されると思うからです。

これは、マニュアルおよび DBRef スタイルのドキュメント参照について、MongoDB のドキュメントに記載されている内容です。

http://docs.mongodb.org/manual/reference/database-references/

MongoDB は手動ドキュメント参照の使用を推奨しています。

私が理解できる最も直接的なアプローチは、この情報を、たとえばスキーマ定義の一部として定義することです。objectid、本、および出版社の定義から始めます。

<xs:simpleType name="objectId">
  <xs:restriction base="xs:string">
    <xs:length value="24"/>
    <xs:whiteSpace value="collapse"/>
  </xs:restriction>
</xs:simpleType>

<xs:element name="Publisher">
  <xs:complexType>
    <xs:attribute name="id" type="fbc:objectId" use="required"/>
    <xs:attribute name="name" type="xs:string" use="required"/>
    <xs:attribute name="location" type="xs:string" use="required"/>
  </xs:complexType>
</xs:element>

<xs:element name="Book">
  <xs:complexType>
    <xs:attribute name="Title" type="xs:string"/>
    <xs:attribute name="publisherId" type="fbc:objectId" use="required"/>
  </xs:complexType>
</xs:element>

3 つの質問:

  1. 本とその出版社の間の文書参照をモデル化するには、これで十分でしょうか? スキーマ ベースの XML ドキュメントに対するより良いアプローチはありますか?

  2. このアプローチでは、Marklogic (または、existDB、Senda、Basex などの他の XML データベース) 内で XQuery を実行するときに問題が発生しますか?

  3. Marklogic は、XPointer と XInclude を使用して、ある種の特別なドキュメント参照を保持する「モジュラー ドキュメント」を使用できると述べています。

    http://docs.marklogic.com/guide/app-dev/mod-docs

手動のドキュメント参照の代わりにそのアプローチを使用する利点はありますか? この機能で動作する Java API の例はありますか?

質問が多すぎる場合は事前にお詫び申し上げますが、すべてここに記載されている質問全体に関連していると思います。ありがとう。

アップデート:

次に、必要に応じてデータの非正規化を行い、プレーンな古いドキュメント URI 属性を使用して、必要に応じて他のドキュメントを参照することに頼ると思います。私が推測する最良のアプローチではありませんが、将来的にはそれで十分だと思います。調査結果を更新し続けます。ありがとう!

4

3 に答える 3

2

David と WST が指摘したように、MarkLogic は結合よりも非正規化を強調しています。データ構造ツリーまたは構造化されたテキスト コンテンツを格納すると、大規模なドキュメントを高いパフォーマンスで取得できます。

ただし、MarkLogic は結合をサポートしています。XInclude を使用して、値が関連ドキュメントのドキュメント URI である要素または属性を集約するか、単に使用することができます。(リンクのアプローチは、HTML でのリンクに相当します。) このようなリンクは、サーバー上の XQuery によって解決するか、単一のクエリで関連ドキュメントを取得することによってクライアント上で解決できます。

于 2013-08-14T02:20:20.423 に答える
1

XIncluded ドキュメント、別名 MarkLogic の「モジュラー ドキュメント」 http://docs.marklogic.com/guide/app-dev/mod-docs

展開後に保存することも (CPF フレームワークを使用している場合は、コンポーネントと最終的に展開されたドキュメントの両方を実際に保存します)、読み取り時に展開することもできます。

読み取りを拡張すると、決定的な違いは、検索機能がドキュメント (またはフラグメント) ベースで検索することです。Modular ドキュメント全体の検索は、マスター ドキュメントではなく、含まれているドキュメントでの一致として表示されます。一般に、これはほとんどの検索ベースのアプリケーションが必要とするものではないと思います。ただし、アプリがあまり検索ベースでない場合、またはこれを考慮に入れることができる場合は、これを利用できます。

一般的に (つまり、他の説得力のある理論的根拠なしに) データを非正規化して、すべてが 1 つのアトミック ドキュメントに収まるようにすることをお勧めします。

-デビッド

于 2013-08-13T23:24:00.720 に答える