データベースエンジンとは正確には何ですか?


14

私はhttp://en.wikipedia.org/wiki/Database_engineの定義を数回繰り返しました。

データベースエンジン(または「ストレージエンジン」)は、データベースからデータを作成、読み取り、更新、削除(CRUD)するためにデータベース管理システム(DBMS)が使用する基礎となるソフトウェアコンポーネントです。

私が理解していないのは、やらなければならないことです。データベースが行うすべてのことをCRUDではありませんか?

データベースエンジンがこれらの機能を実行する場合、データベースの残りの部分は何をしますか?


太字で示された質問に対する直接的な回答(データベースの残りの部分は何をしますか?)については、Bryanの回答を参照してください。CRUDのほか、データベースエンジンの機能の詳細については、Leighの回答を参照してください。
-nealmcb

回答:


15

CRUDは、永続ストレージに関連するデータベースに必要な特性を定義するためのものです。データベースエンジンで実行できるすべてのことを説明するものではありません。

比較するために、基本的に車両は輸送に使用されるデバイスです。確かに、この定義には確かに、現代の自動車に伴うすべての詳細が含まれているわけではありません。

データベースエンジンは、複数のユーザー、トランザクションMVCC(Multiversion Concurrency Control)、バッファーとキャッシュ、ACID(原子性、一貫性、分離、耐久性)、および異なる分離レベルを処理できます。読み取りは、メモリ、リモートデータベース、およびディスク上の複数のテーブルからデータをプルし、複数の明示的および/または暗黙的なコードパスを通じてSQLを使用してデータを処理し、要求元のアプリケーションに提示します。作成では、ストレージを割り当て、構造をプロビジョニングし、値を割り当て、データを保存する前に独自の処理を行います。等。


これは非常にコンパクトですが、完全な回答です。+1 !!!
-RolandoMySQLDBA

ところで、車両と特定のタイプの車両についてのいい例えです。
-RolandoMySQLDBA

私の意見では、トランザクション、ACID保証、分離レベル、同時実行制御、バッファ、キャッシュはすべてデータベースエンジンによって処理されます。なぜそう言うのですか?...このlinux.org/threads/an-introduction-to-mysql-storage-engines.4220をご覧
Shatu

@リー、同時実行性(の欠如)はストレージエンジンの機能であり、DBMSの機能ではありませんか?DBMSの機能である場合、MariaDB / MySQLがMyISAMなどの特定のストレージエンジンのトランザクションを実行できなかったのはなぜですか?
Pacerier 14年

@Pacerier-これは、DBMSとストレージエンジンを分離するシステムに当てはまる場合がありますが、他の人にとっては区別は意味がありません。
リーRiffel

12

一部のデータベースでは、ジョブに最適なものに応じて、多くのエンジンを実行できます。たとえば、私のアプリケーションの多くは、ほとんどのデータにInnoDB(キー制約と行レベルロック)を使用し、セッションデータにMyISAM(高速で処理が少ない)と監査証跡にArchiveDB(圧縮および挿入/選択のみ、更新/削除なし)を使用しています。

データベースソフトウェアの「残り」は、APIまたはターミナルを介して使用するための共通インターフェースを提供し、複雑なアクション(結合、サブクエリなど)を許可し、含まれるエンジンのヘルス/ステータスおよび構成を管理します。エンジンの供給とケアには多くのことがあり、データベースソフトウェアはその複雑さをすべて隠しています。


実際に太字の質問に答えてくれてありがとう!
nealmcb
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.