リレーショナルデータベースとオブジェクト指向データベース

残念ながら、ハブではオブジェクト指向データベース (OOBD)についての興味深い群れを見つけることができませんでした。 このトピックを上げたいのは、 最近、OBDの話が増えています。 ただし、すべての情報を1つの記事にまとめることはできないため、最初にこのトピックに関する簡単な概要と私の考えを説明します。 この記事では、各テクノロジーに基づいた特定のソリューションについては検討しませんが、テクノロジー自体の比較のみを試みます。



背景



私は約6年間データベースの設計と開発を行ってきました。 この間、デザインへのアプローチ方法、システムアーキテクチャの選択方法、リレーショナルデータベースを正規化および非正規化するときに存在する機能、特定のデザインとクエリを最適化する方法についてのビジョンを策定しました。 仕事の最初の年に、同じクエリを書くルーチンをやりたくないという結論に達しました。 その結果、独自のストアドプロシージャジェネレータを作成し、データベースの構造により、ほとんどのルーチンクエリを生成しました(興味深い場合は、このトピックに関する記事を作成できます)。 その後、このジェネレーターは年々進化し、最終的に、オブジェクトモデルをリレーショナル構造に変換しないように、オブジェクトをそのまま保存する必要が生じました。 つまり 実際、 ORMアドインを生成するようになりました。 もちろん、十分な数の高品質のORMアドインとオブジェクトリレーショナルデータベースが既に作成されており、それらを正常に使用できると言うことができます(私はあなたに同意しますが、いくつかの予約はあります)。 しかし、それは私にも似合いませんでした。 そして、さらに先へ進むことにしました。



ORMの影響



私の謙虚な意見では、ORMアドオンの使用はOOBDの開発を遅らせるだけです。 このかなり議論の余地のある声明を明確にしようとします。 ORMは悪だとは思いませんが、絶対に良いというわけでもありません。 ORMテクノロジーは、開発ツールの開発において間違いなく重要な役割を果たし(そして今でも)果たしており、プログラマーが実際にデータストレージのロジックを気にかけないことを示しています。 ただし、ここでは、他の場所と同様に「BUT」があります。



ORMを使用すると、間違いなく製品開発がスピードアップし、人件費と何とか何とかが削減されます。 ただし、ORMは、直接作業よりも常に低速に動作する一種のレイヤーです(ここでは、SQLクエリへのすべての呼び出しをアプリケーションに転送することを決して勧めません-至る所に中間点がなければなりません)。 ORMの存在により、開発者はDBMSの作業を実際に考えることができず(ほとんどの場合それを考慮しません)、負荷のかかる最適なアプリケーション操作ではなく、軽度に置く必要があります。 最適化を行うには、レイヤーをクロールし、クエリがより速く動作するように設定する必要があります。データベースをクロールし、インデックスとテーブルを再設定する必要があります。 したがって、アプリケーションが最適に動作するには、ORMがない場合よりも多くの労力が必要です。 その結果、開発コストを削減し、製品の最初のバージョンのリリースを加速しますが、最適化プロセスを複雑にします。



ただし、製品の最初の(そして多くの場合2番目、3番目の)バージョンを作成する時点で最適化について考える人はいません。 現在、ほとんどのオフィスの主な要因は品質ではなく、開発速度です。 それは理解できます。最初は、顧客は最小限のお金を使って、できるだけ早く製品を受け取りたいと思っています。 そしてしばらくしてから、データベースが実際のデータでいっぱいになると、数か月が経過し、顧客(および開発者も)は、サンプリング時間がほぼ2倍になり、10から20人のユーザーが同時に作業し、DBMSが自殺しようとしていることに気付きます。 。 など 開発者は多くの場合、東洋の知恵に導かれます。ロバが死ぬか、スルタンが死ぬか、Khoja自身が死にます。 しかし、誰も死ななかった場合、開発者はボトルネックを探し始め、ORMから自動的に生成されたクエリを削除し、手でそれらを書き換え、データベーステーブルのインデックスを再構築し、この最適化と同様の最適化に多くの時間と労力を費やします。



何かが私を連れ去った。 ORMに対する私の立場を明確に述べたことを願っています。 リレーショナルデータベースとオブジェクト指向データベースの比較(または、必要に応じて)に戻りましょう。



リレーショナルDBとOBOBD



プログラミングでのOOPパラダイムは非常に人気がありますが、このパラダイムはデータベース開発テクノロジーではまだあまり人気がありません。 また、客観的および主観的な理由があります。



結論と展望



開発の世界の現在の状況に照らして、基本的な問題が解決されるまで(マットマシンとクエリ言語の標準)、OOBDを使用した深刻で人気のあるソリューションの見通しは非常に疑わしい(しかし劣らず望ましくない)ようです。 開発者として、これは少し悲しくなります。なぜなら、データベース開発ツールのさらなる定性的な開発には、強力で便利なOOBDの存在が単に必要だという結論に達したからです。



リレーショナルデータベースの展望については、長期にわたって生き続けると思います。 OOBDでは、リレーショナルデータベースを完全に置き換えることはできません。 一部の実際のタスクでは、オブジェクトではなくテーブルにデータを保存する方が便利で正確です。



したがって、時間の経過とともに、OBDBはリレーショナルデータベースから商用システムの市場の一部を取り戻すと考えていますが、リレーショナルデータベースでは現在入手できないような完全な利点を達成しています。



All Articles