175

ORM (Object Relational Mapper) はデータ間の関係をマッピングし、ODM (Object Document Mapper) はドキュメントを扱います。mySQL が ORM の例であり、MongoDB が ODM の例であると想定するのは正しいですか?

ご覧のとおり、私は概念の理論にあまり詳しくありません。誰かが2つの違いを明確にしてもらえますか?

4

5 に答える 5

196

MySQL はリレーショナル データベースの一例です。ORM を使用して、コード内のオブジェクトとデータのリレーショナル表現を変換します。

ORMの例は、nHibernateEntity FrameworkDapperなどです...

MongoDB はドキュメント データベースの例です。ODM を使用して、コード内のオブジェクトとデータのドキュメント表現を変換します (必要な場合)。

Mandangoは、MongoDB の ODM の例です。

于 2012-09-04T10:50:40.843 に答える
32

ORM は、オブジェクト モデルとリレーショナル データベースの間をマップします。ODM は、オブジェクト モデルとドキュメント データベースの間をマップします。MySQL は ORM ではなく、リレーショナル データベース、より具体的には SQL データベースです。MongoDB は ODM ではなく、ドキュメント データベースです。

于 2012-09-04T10:51:11.547 に答える
12

基本的に、ORM は ODBC、JDBC、OLEDB などの SQL データベース ドライバーを使用してオブジェクト表記をリレーショナル表記に変換し、ODM は JSON または JSONB API を使用してオブジェクト表記をドキュメント表記に変換します。

内部にはさまざまな種類の実装があります。

PS: JSONB は、MongoDB で使用されるバイナリ形式で保存される JSON テキスト ドキュメント表記です。

于 2014-10-18T06:06:18.403 に答える
0

ORM と ODM の違いを理解するには、まずリレーショナル データベースとドキュメント データベースの違いを確認することをお勧めします。私は手を振る方法でそうします。

リレーショナル データベースは、おそらく使い慣れたデータベースです。次のように、データをテーブルに格納するもの:

ここに画像の説明を入力

リレーショナル データベースの一般的な例は、MySQL、Postgres、および SQLite です。リレーショナル データベースにクエリを実行するには、SQL を使用します。

文書データベースはどうですか? ドキュメント データベースでは、データはテーブルではなく JSON に格納されます。

ここに画像の説明を入力

実際、それは 100% 正確ではありません。MongoDB の説明:

ドキュメントは、フィールドと値のペアでデータを保存します。値は、文字列、数値、日付、配列、オブジェクトなど、さまざまな型と構造にすることができます。ドキュメントは、JSON、BSON、XML などの形式で保存できます。

さて、ORM とは何ですか、ODM とは何ですか、そしてそれらはどのように比較されるのでしょうか?

まあ、ORMは...の略です...実際、この答えを説明しましょう:

オブジェクト リレーショナル マッピング (ORM) は、オブジェクト指向のパラダイムを使用して、データベースからデータをクエリおよび操作できるようにする手法です。ORM について話すとき、ほとんどの人はオブジェクト リレーショナル マッピング手法を実装するライブラリを参照しているため、「ORM」という言葉が使われています。

基本的に、アプリケーション コードでは通常、オブジェクトを扱います。しかし、データベースにはテーブルがあります。ORM は、この 2 つをマッピングするライブラリです。ウィキペディアが説明しているように:

これにより、事実上、プログラミング言語内から使用できる「仮想オブジェクト データベース」が作成されます。

ここに例があります。Active Recordは、Ruby on Rails の一般的な ORM です。Active Record を使用すると、 のような操作を行って、 のようなUser.find_by(name: 'David')操作を返すことができます{ id: 1, name: 'David' }。したがって、ORM は次のマッピングを行っています。

ここに画像の説明を入力

そして、ODM を使用すると、ドキュメント データベースを除いて、基本的に同じことを行います。これは、アプリケーション コード内のオブジェクトからデータベース内のドキュメントへのマッピングです。Mongooseは ODM の良い例です。MongoDB で動作します。

于 2022-02-13T20:13:35.270 に答える