オブジェクト指向データベースが成功していないのはなぜですか? [閉まっている]

StackOverflow https://stackoverflow.com/questions/170649

質問

それが問題です。 OODBが失敗した理由、または今日多くのシステムがまだリレーショナルデータベースを使用している理由を考えてみてください。

役に立ちましたか?

解決

複数回回答できますか?もう1つの理由は、リレーショナルDBが数学の強力な基盤を持っていることです。関係の定義から通常の形式まで、理論は堅実です。リレーショナルモデルがオブジェクト指向にうまくマッピングされないのは事実ですが、そのモデルの利点と安定性はマッピングの問題よりも重要です。

他のヒント

主な理由はSQLです。アプリケーションの外部の他のコンテキストでデータベースのデータを使用できると非常に便利です。多くの場合、オブジェクトデータベースでは、データは簡単に照会できない形式で保存されます。リレーショナルデータベースを使用すると、データは、たとえばデータウェアハウスの一部になったり、システム管理者などによって照会されたりすることができます。

「オブジェクトデータベース」が原因だと思う(ほとんど)誰も実際には持っていない問題を解決しています。オブジェクトグラフを単純に永続化するには、ほとんどのオブジェクト指向環境に組み込まれたシリアル化で「十分」です。データのサブセットに対して高度な操作を行いたい場合は、リレーショナルデータベースとSQLが最適です。

一部のフリンジアプリケーション(メモリに保持できない巨大なオブジェクトグラフですが、RDBMSの使用では関係が十分に単純化されないもの)を除き、これらのツールは本当に必要ありません。

OODBが主流ではないからといって、OODBが持っている成功をまだ考慮すべきです。 CacheとZopeはどちらも(比較的)広く使用されていますが、一部の標準では成功していると見なされます。

おそらく、OODBが劇的に定着していない最大の理由は、OODBの潜在的な市場シェアのほとんどを占めるハイブリッドオブジェクトリレーショナルシステムであるPostgreSQLとInformixの成功によるものです。

これは質問に直接答えないことを知っていますが、それは方程式の一部だと思います。ただし、全体として、関係データベースをサポートする勢いと深く染み込んだ思考プロセスにより、人々が切り替えることは難しいと思います。現在、DBの専門家はほぼ独占的にリレーショナル理論の訓練を受けており、あなたのDB専門家はOODBの回避に非常に興味を持っています。

大規模な企業DBA、主流の教授、カリキュラム、およびOODBを管理するために準備された開発者以外のスタッフを見つけるまでは、開発側からどれほど良いものであっても大衆に訴えることはまずないと思います。

まあ、それは奇妙ではないですか?オブジェクト指向の分析と設計の天頂のようなドメイン駆動設計への推進があり、ORMシステムを活用してオブジェクトを永続化するエンタープライズパターンがあります。アプリケーションDESIGNがオブジェクト指向であり、ドメイン中心である場合、OODBがアプリケーションに大きなメリットをもたらすことは、私にとってまったく理にかなっています。

成熟と取り込みに関する問題は別として、哲学的な観点からは、OODBは有益であるか、OOアプリケーションであると思われます。最初にそのマッピング層を維持する必要はありません;)

ただし、ドメインドライブの設計を行っておらず、オブジェクトをデータオブジェクトとして使用し、ストアドプロシージャのように使用している場合、実際には取得できません;)

RDBMは(強力な理論的基盤に基づいて構築され、はるかに長い間市場に出回っており、多くの場合OODBよりも忠実にデータをモデル化でき、OODBよりも多くのDBAが使用できます)。これがリレーショナルタプルの形式の1つの理由です。

Philのポイントを拡大できるなら、SQLの標準化です。 OODBはOQLなどのクエリ言語を試しましたが、真の標準に従うことはありませんでした。また、おそらく標準化が行われていないため、クエリ言語の品質が疑われました。標準は競争を助長し、品質を生み出します。

1つの理由は、データベースはデータに関するものであり、オブジェクトは構造とアルゴリズムに関するものであるということです。データを取得してクラスに埋め込むと、関係と操作を静的構造で特徴付けます。一方、データベースは、原子の整合性を損なうことなく(通常はクラスを使用して)異なる構造に再構築できるアトミックテーブルのインスタンスにデータを非構造化することです。

データベースは、ヘキサヘキサフレクサゴンに多少似ています。

それ、およびo / r-mappers。それらを通じて、前述の利点が有効でありながら、真のOO-DBとの差ははるかに小さくなります。

高額な技術決定は、技術知識のある人が行うものではありません。リレーショナルデータベースを使用している企業は、OODBの脅威にさらされていると感じる多くの人々を雇用しているため、OODBについて学ぶことを避けます。

2つの哲学的理由があると思います。

最初に、人々は伝統的に永続性を実際の機能から分離する傾向があります。オブジェクトの「ライフ」を削除すると、それから離れて、主に永続化のために保管すると、レコードになり、「生気のない」ものとして扱う傾向があります。データオブジェクト。

それに続いて、人々は非常に似たものの大規模なコレクションを考えると、それらをオブジェクトではなくテーブルと考え始めます。

O / Rでは、区別が消え始めていると思います。たとえば、hibernateを使用して、本当に複雑なクラス階層をMySQLデータベースにダンプします。しかし、私は自分のプロジェクトのためにパフォーマンスが重要なものを書いていないので、効率的に行われていないと確信しています。

OODBの採用が遅い理由は、リレーショナルSQLデータベースをより一般的かつ/またはより適切にするいくつかの重要な要因に大きく基づいています。 純粋なオブジェクト指向データベースは、リレーショナルモデルの多くの欠点を克服した状態にありますが、いくつかの重要な部分が欠落しています。

中央データベース管理のサポートが不足している傾向がありますが、これはさまざまな製品で急速に修正されています。

2番目の理由は、標準クエリ言語を実装しているシステムがほとんどなく、代わりにプログラミング言語または専用クエリ言語に依存してストア内のデータを取得および操作することです。これは、NoSQLベースのソリューションに慣れているプログラマーのまったく異なる考え方に基づいて新しいクエリ言語を習得する必要がある場合に、多くの人にとって見事なストッパーです。 それに加えて、ほとんどのSQLベース/リレーショナルデータベースは、オブジェクト指向設計をサポートするようになりました。さらに、ORMのような多くの「バイパス」に使用するラッパーがあります。リレーショナルデータベースの問題は、選択したプログラミング言語ではすぐに利用できない。

しかし、これらの問題は主に企業環境に存在します。 小型デバイスの組み込みデータベースとして、Webサイトストレージや航空宇宙などの分野で非常に人気があり、多くの場合、通常のリレーショナルデータベースの必要性を完全に置き換えました。

将来の展望を知っているのは誰ですか?

ほとんどの言語で提供されるシリアル化により、オブジェクト属性をフラット化できるため、RDBMSに簡単に保存でき、同様にオブジェクトを取得することは大きな問題ではありません。広く強固な基盤がまだないため、実装するOODBMSの使用が妨げられています。

現在、これを私の修士論文プロジェクトとして考えており、今日のRDBMSで一般的に使用されているほぼすべてのコンポーネントをサポートするOODBMSの一般的なフレームワークを提供します。勉強中に、Javaと.net専用のOODBMSを使用するアプローチ(実装)であるdb4oと呼ばれるプロジェクトに遭遇しました。これは、すべてのタイプのプラットフォームと言語の一般性の欠如のもう1つの理由です。

それは、オブジェクト指向の動きが勢いを増している間に、Oracleのような大物がリレーショナルデータベースに投資していたからだと思います。彼らにはそうする強い理由がないからです...それは多くのプログラマーの生活を単純化します...しかし、「プログラマーの生活をよりシンプルにする」彼らにとって非常に良いビジネス目標ではありません!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top