web-dev-qa-db-ja.com

オブジェクト指向データベースがリレーショナルデータベースほど使用されないのはなぜですか?

多くのリレーショナルデータベース管理システム(RDBMS)に出会いました。しかし最近、私はhibernateを使用したので、なぜオブジェクト指向データベースがそれほど人気が​​ないのか疑問に思い始めました。

JavaまたはC#などのオブジェクト指向言語が非常に人気がある場合、なぜオブジェクト指向データベース管理システム(OODBMS)もそれほど人気が​​ないのですか?

18
user65878

複数の理由があります。

  1. 多くの開発者は、リレーショナルデータモデリングの経験があるだけです。 OOデータベースを使用するには、データをモデル化して考えるためのまったく異なる方法を学習する必要があります。これは非常に困難であるか、かなり時間がかかります。
  2. リレーショナルDBには、成熟するのに多くの時間がありました。無料のリレーショナルDBでさえ、高度な最適化とインデックス作成の技術を備えています。また、リレーショナルデータは格納とインデックス登録が簡単です。同じことは、OOデータベースについては言えません。
  3. リレーショナルおよびOOモデルが登場し始めたとき。リレーショナルには巨大なEdgeがあり、数学的に「正しく」、データの保存とクエリの標準でした。OO何もありませんでした。
  4. [憶測]多くの大企業は、リレーショナルDBの作成に多くのリソースを投入しています。 OO DBを代わりにサポートすることは逆効果です。それらの多くは、代わりにOO原則をリレーショナルモデルに統合することに投資し、ほとんどの現在のDBをいわゆるオブジェクトにしました。 -relational。IMOこれらのモデルは、純粋なリレーショナルまたは純粋なOOよりも最悪です。[/ speculation]
  5. 最後に注意すべきことは、多くの開発者はOOデータをモデル化する方法を実際に理解していないということです。これは通常、次善の貧弱なモデルになります。安くて信頼性の高い多くの開発会社は経験の浅い開発者は、すべてのCSカレッジで教えられている単純なリレーショナルモデルを選択する方が、熱心で証明されていないOO aproach。[/ rant]
11
Euphoric

データベースが最初に登場したとき、OOPはまだプログラミングの方法ではありませんでした。一方、リレーショナルデータベースは大きな牽引力を獲得しました。そして、IBMによって80年代に導入されたSQLはすぐに- lingua francaすべてのデータベースの。

OOPが人気になると、いくつかの試みがありましたが、いくつかの問題があります。最初に、真のOODBMSは実装が本当に難しいです。リレーショナルデータベースの場合、テーブルと関連するインデックスはかなり単純な構造です(例:Bツリー)もう1つの理由は、リレーショナルモデルの背後に多くの理論があり、それが数学的集合論から直接派生していることです。リレーショナルデータベースを正しく設計する方法はいくつか知られています(正規化など)。最後に、少なくとも、人々はすでにSQLにかなり慣れています。

ほとんどの場合、現代のNoSQLソリューションは、実際にはOODBMSに向けた一歩ではありません。それらの多くはまだリレーショナルであり、JOINsのみが削除されています。それらのいくつかは実際にはオブジェクトストアですが、オブジェクト間の関係を認識していないため、実際にはOODBMSではありません。

OODBMSがそれほど強くないもう1つの理由は、「貧乏人のOODBMS」ソリューションであるORMがあるためです。よく知られた安定したテスト済みのDBエンジンに支えられているため、これは非常に人気を博していますが、オブジェクトへのマッピングを提供します。もちろん、これらは真のOODBではありません。

10
vartec