4

mongodb-customer-service-data の例 ( https://github.com/SpringSource/spring-data-document-examplesで入手可能) を使用しています。

この例では、@RelatedDocument を使用して、データベース間でドメイン オブジェクトを関連付けています。オブジェクトを十分に保存および更新できます。

ただし、JPA データベース (HSQLDB の例) と MongoDB の両方に対して基準を持つクエリを実行したいと考えています。

これは可能ですか?それが可能であることを証明する例はどこにありますか?


問題に直接関係のないコメント:

私の使用例は、アプリケーションが Oracle DB であるということですが、現在、半構造化データを受け取り始めています。JPA エンティティは、特定の制約内でユーザーがフィルタリングできますが、この機能を半構造化データに拡張したいと考えています。

競合するテクノロジー QueryDSL と EclipseLink もあるようですが、データベース全体でクエリを実行することについては何も見つかりません。

JPA では、データベースごとに異なる PersistanceUnit が関連付けられているため、クロス データベース クエリを実行できないようです。ただし、mongodb クロスストアは、この特定の問題を無効にしているようです。

4

1 に答える 1

0

私は Spring Data JPA を使用したことはありませんが、JPA がこれを行うことができない場合、Spring Data がそのような機能を提供するとは思えません。
mongodb cross-store で何を理解しているのかわかりません。そこで、mongodb でできることとできないことを簡単に説明します。

mongodb を使用すると、複数のコレクション (テーブル) にまたがるクエリを実行できないため、プレーンな mongodb と結合することはできません。したがって、 @RelatedDocument は Spring Data が提供する機能です。関連ドキュメントは、埋め込まれているか (Spring Data がこれをサポートしているかどうかは不明)、別のコレクション (およびデータベース) 内のドキュメントへの単純な DBRef である可能性があります。DBRef を使用すると、_id、コレクション、データベースなどの @RelatedDocument フィールドに対してのみクエリを実行できますが、実際に参照されるドキュメント プロパティはクエリできません。

これは、コレクション全体でクエリを実行できないため、データベースに対してもこれを実行できないため、mongodb では 1 回のクエリでクロス データベースを検索できないことを示しています。あなたが持っている唯一のクロスストア機能は、シャードされたコレクション用です。これにより、シャードキーを介して複数のノードにコレクションを分散させることができます。MongoDB は、クエリを実行するために、すべてのコレクション シャードにわたってクエリを実行する必要がある場合があります。しかし、これ以外に、実際にはクロスデータベース関数とは呼びませんが、そのような機能はありません。

これで解決しない場合は、何をしたいのかを詳しく説明してください。

于 2013-04-21T05:52:50.403 に答える