6

最近、私はmongoに取り組み始めました。mongodb の概念全体がスキーマレスでドキュメント指向であるため、関係をエンティティに移行するにはどうすればよいでしょうか?

オブジェクトをテーブルにマッピングするために、Javaで休止状態のORMを使用しました。mongodbでも同じことをする必要はありますか?

OGM の使用を制限するもの:

  1. Javaエンティティがmongoのコレクションにマップされると、mongoがスキーマレスであるという概念は引き続き有効になります。この場合、メンバー変数をそのコレクションのキーにマップする必要があります。また、mongo コレクションにネストされたオブジェクトまたはオブジェクトの配列が含まれていると想定されている場合は、どうすればよいでしょうか?

  2. Hibernate は最近 (2015 年 1 月)、NoSQL データベース用のOGMを開始しました。

mongo に OGM を選択するという決定を手伝ってくれる人はいますか?

4

2 に答える 2

3

編集: Kundera はメンテナンスされなくなりました。代替品をご利用ください。


もちろん、ORM は使いやすく、その多くは RDBMS と同様の方法で SQL または JPQL を使用してクエリを実行できますが、ORM には独自の制限があり、オーバーヘッドも少し追加されます (パフォーマンスの観点から)。 . そのため、ネイティブ MongoDB Java ドライバーの使用が推奨されます。

NOSQL データベースの場合、ORM の選択は純粋にユースケースに依存します。ORM は、テーブル ( MongoDB の場合はコレクション) をエンティティ オブジェクトにマップします。加えて、マップをエンティティに保持できるため、デザインを少しスキーマレスにすることができます。ほとんどの場合、データはほぼ構造化されているため、ORM を使用できます。しかし、完全に用途の広い非構造化データがある場合は、Java ドライバーを使用してください。Mongo のドキュメントを確認してください。

また、 KunderaSpring Dataなどの他の安定した ORM ツールもあります。それらを探索する必要があります。

PS:

  • この回答は、ORM と Hibernate ORM にないネイティブ ドライバーに対するものです。
  • 私はクンデラの開発者です
于 2015-11-03T05:21:54.937 に答える
0

Tinkerpopのような OGM フレームワークをお勧めします。または、もう少し高レベルで Hibernate に似たものが必要な場合は、Ferma を検討してください。Ferma は Tinkerpop の上にあり、アノテーションを使用して、JPA と Hibernate のエンティティに似た Java クラスを定義します。違いは、Ferma と Tinkerpop は、従来のリレーショナル データベース用に設計されたフレームワークに詰め込もうとするのではなく、グラフ データベース専用に構築されていることです。

Ferma と Tinkerpop の優れた機能の 1 つは、グラフ データベース用に構築されている一方で、リレーショナル データベースでも動作することです。Tinkerpop には、市場に出回っているほぼすべての主要なグラフ データベースとリレーショナル データベースで動作するようにするいくつかのドライバーがあります。また、Tinkerpop にネイティブに存在するインメモリ ドライバーを使用できるため、データベースによってサポートされる必要はまったくありません。モジュール化された柔軟なコードに関しては、多くの利点がある非常に柔軟なプラットフォームです。

参考までにフェルマプロジェクトの説明です。

Ferma プロジェクトは、もともと TinkerPop2 Frames プロジェクトの代替として作成されました。当時、これにはコミュニティが必要とする機能が欠けており、そのパフォーマンスは非常に遅かった. 現在、Ferma は、従来のデータベースのオブジェクト リレーショナル モデル (ORM) ライブラリに似た役割を担う堅牢なフレームワークです。Ferma は、Object-graph Model (OGM) ライブラリと呼ばれることが多く、Java オブジェクトを Vertex や Edge などのグラフ内の要素にマップします。つまり、下層のグラフと対話するための抽象化レベルを提供する Java インターフェイスとクラスを使用してスキーマを定義できます。

また、Tinkerpop プロジェクトの説明。

Apache TinkerPop™ は、グラフ データベース (OLTP) とグラフ分析システム (OLAP) の両方のためのグラフ コンピューティング フレームワークです。

注: 私は Ferma の著者の 1 人です。

于 2016-12-29T09:51:36.930 に答える