(Translated by https://www.hiragana.jp/)
データベースエンジン - Wikipedia コンテンツにスキップ

データベースエンジン

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』

データベースエンジン (えい: database engine)は、データベース管理かんりシステム(DBMS)がデータベースからデータ作成さくせいり、更新こうしん削除さくじょ(CRUD)するために使用しようする基盤きばんとなるソフトウェア部品ぶひんのこと。ストレージエンジン (えい:storage engine)ともばれる。ほとんどのデータベース管理かんりシステムには、ユーザーがDBMSのユーザーインターフェイス経由けいゆしなくても基盤きばんとなるエンジンと対話たいわできるAPI実装じっそうされている。APIの利用りようには、TCP/IP特定とくていポート番号ばんごう使つかって通信つうしんおこな場合ばあいがある。

「データベースエンジン」という用語ようごは、「データベースサーバー」または「データベース管理かんりシステム」とおな意味いみ使つかわれることもある。 「データベースインスタンス」は、実行じっこうちゅうのデータベースエンジンのプロセスとメモリ構造こうぞうのことをす。

ストレージエンジン

[編集へんしゅう]

最新さいしんのDBMSのおおくは、おなじデータベースない複数ふくすうのストレージエンジンをサポートしている。たとえば、 MySQLInnoDBMyISAM両方りょうほうをサポートしている。

ストレージエンジンにはトランザクション処理しょりをサポートするものとしないものがある。


名前なまえ ライセンス トランザクション処理しょりあり
Aria GPL No
Falcon GPL Yes
InnoDB GPL Yes
MyISAM GPL No
InfiniDB GPL No
TokuDB GPL Yes
WiredTiger GPL Yes
XtraDB GPL Yes
RocksDB GPL v2 または Apache 2.0 Yes


エンジンの種類しゅるいには以下いかのようなものもある。

設計せっけいじょう考慮こうりょ事項じこう

[編集へんしゅう]

データベースない情報じょうほうは、ハードウェアのプロパティを指定していして効率こうりつてききできるストレージないデータ構造こうぞうとしてレイアウトされたビットとして保存ほぞんされる。通常つうじょう、ストレージ自体じたいは、データベースをふくむストレージを広範囲こうはんい利用りようするさまざまな領域りょういき要件ようけんたすように設計せっけいされている。動作どうさちゅうDBMSは、それぞれのレイアウト方法ほうほうで、つね複数ふくすうのストレージの種類しゅるい(メモリ、外部がいぶストレージなど)を同時どうじ利用りようする。

原則げんそくとして、データベースストレージは線形せんけいアドレス空間くうかんなすことができ、データのすべてのビットがこのアドレス空間くうかん一意いちいのアドレスをつ。実際じっさいには、アドレスのごく一部いちぶのみが初期しょき参照さんしょうポイントとして保持ほじされる(これにもストレージが必要ひつよう)。ほとんどのデータは、変位へんい計算けいさん参照さんしょうポイントからのビット単位たんい距離きょり)と、必要ひつようなデータアクセス操作そうさ最適さいてきされた効果こうかてき方法ほうほうですべての必要ひつようなデータへのアクセスパス(ポインターを使用しよう)を定義ていぎするデータ構造こうぞう使用しようした間接かんせつ参照さんしょうによってアクセスされる。

データベースストレージ階層かいそう

[編集へんしゅう]

データベースは、動作どうさちゅう複数ふくすうのタイプのストレージに同時どうじ存在そんざいし、ストレージ階層かいそう形成けいせいする。現在げんざいのコンピューターの性質せいしつじょう、DBMSをホストするコンピューターないのデータベース部分ぶぶんのほとんどは、揮発きはつせいストレージに存在そんざいする(部分ぶぶんてき複製ふくせいされる)。処理しょり/操作そうさされているデータ(データベースの一部いちぶ)は、プロセッサない場合ばあいによってはプロセッサのキャッシュ存在そんざいする。これらのデータは、通常つうじょうはコンピュータバス(これまでのところ、通常つうじょう揮発きはつせいストレージコンポーネント)をかいしてメモリからられたり、メモリにまれたりする。コンピュータメモリは、通常つうじょう標準ひょうじゅんのストレージインターフェイスまたはネットワーク(ファイバチャネルiSCSIなど)をかいして、外部がいぶストレージとのあいだでデータを通信つうしんする(転送てんそうされる)。一般いっぱんてき外部がいぶストレージユニットであるストレージアレイは、通常つうじょう揮発きはつせい高速こうそくDRAMのような高速こうそくキャッシュから、フラッシュドライブ磁気じきディスクドライブ不揮発ふきはつせい)のような、より低速ていそく標準ひょうじゅんインターフェイスをかいした接続せつぞくまで、独自どくじのストレージ階層かいそうつ。ドライブは、さらに低速ていそくの、磁気じきテープのようなすぐにアクセスできる場所ばしょもっとすくない部類ぶるいだい規模きぼデータベース、つまりデータベースバックアップ世代せだい接続せつぞくできる。

通常つうじょう、ストレージの速度そくど価格かかくあいだには相関そうかん関係かんけいがあり、より高速こうそくなストレージは通常つうじょう揮発きはつせいである。

データ構造こうぞう

[編集へんしゅう]

データ構造こうぞうは、明確めいかく定義ていぎされた方法ほうほうでデータを抽象ちゅうしょうてき構造こうぞうである。効率こうりつてきなデータ構造こうぞうにより、効率こうりつてき方法ほうほうでデータを操作そうさできる。データ操作そうさには、さまざまなモードでのデータの挿入そうにゅう削除さくじょ更新こうしん、および取得しゅとくふくまれる。特定とくていのデータ構造こうぞうがたは、特定とくてい操作そうさでは非常ひじょう効果こうかてきであり、操作そうさではそうならない。データ構造こうぞうがたは、DBMSの開発かいはつに、ふくまれるデータがた必要ひつよう操作そうさ最適さいてきになるように選択せんたくされる。特定とくていのタスクよう選択せんたくされたデータ構造こうぞうがたは、通常つうじょう、それが存在そんざいするストレージの種類しゅるい(たとえば、アクセス速度そくど、アクセスされるストレージチャンクの最小さいしょうサイズなど)も考慮こうりょれる。一部いちぶのDBMSでは、データベース管理かんりしゃは、パフォーマンスじょう理由りゆうから、データ構造こうぞうのオプションからユーザーデータをふくめるように柔軟じゅうなん選択せんたくできる。データ構造こうぞうには、データベースのパフォーマンスを調整ちょうせいするための選択せんたく可能かのうなパラメーターがある場合ばあいがある。

データベースは、おおくのデータ構造こうぞうタイプでデータを格納かくのうできる[1]一般いっぱんてきれいつぎとおりである。

データの方向ほうこうけとクラスタリング

[編集へんしゅう]

従来じゅうらいくだり指向しこうとは対照たいしょうてきに、関係かんけいデータベースは、特定とくてい構造こうぞうにデータを格納かくのうする方法ほうほうにおいて、れつ指向しこうまたは相関そうかんがたにすることもできる。

一般いっぱんに、通常つうじょう一緒いっしょ使用しようされるさまざまなかたのデータベースオブジェクトが「クラスター」されて近接きんせつするストレージに配置はいちされると、パフォーマンスが大幅おおはば向上こうじょうする。これにより、通常つうじょう最小限さいしょうげん入力にゅうりょく操作そうさでストレージから必要ひつよう関連かんれんオブジェクトを取得しゅとくできる(それぞれがかなり時間じかんがかかる場合ばあいがある)。インメモリデータベースの場合ばあいでも、メモリない入出力にゅうしゅつりょく操作そうさおおきなキャッシュを一般いっぱんてき使用しようするため、クラスタリングによってパフォーマンスが向上こうじょうし、同様どうよう動作どうさられる。

たとえば、在庫ざいこのある「アイテム」のレコードを、それぞれの「注文ちゅうもん」レコードすべてとクラスターすると便利べんり場合ばあいがある。特定とくていのオブジェクトをクラスターするかどうかの決定けっていは、オブジェクトの使用しようりつ統計とうけい、オブジェクトサイズ、キャッシュサイズ、ストレージの種類しゅるいなどに依存いぞんする。

データベースのインデックス作成さくせい

[編集へんしゅう]

インデックス作成さくせいは、一部いちぶのストレージエンジンがデータベースのパフォーマンスを向上こうじょうさせるために使用しようする手法しゅほうである。おおくの種類しゅるいのインデックスは、クエリを実行じっこうするときにすべてのエントリを調しらべる必要ひつようせいらすてん共通きょうつうである。だい規模きぼなデータベースでは、これによりクエリの時間じかん/コストを桁違けたちがいに削減さくげんできる。インデックスのもっと単純たんじゅん形式けいしきは、ほんうらにあるインデックスと同様どうように、エントリの場所ばしょへの隣接りんせつする参照さんしょう使用しようして二分にぶん検索けんさく使用しようして検索けんさくできるのソートされたリストである。おなじデータに複数ふくすうのインデックスをけることができる(従業じゅうぎょういんデータベースは、せい雇用こようでインデックスをけることができる)。

インデックスはパフォーマンスに影響えいきょうするが、結果けっかには影響えいきょうしない。データベース設計せっけいしゃは、アプリケーションロジックを変更へんこうせずにインデックスを追加ついかまたは削除さくじょできるため、データベースの拡張かくちょうやデータベースの使用しようじょうきょう変化へんかともなうメンテナンスコストを削減さくげんできる。インデックスはデータアクセスを高速こうそくできるが、データベースないのスペースを消費しょうひするため、データが変更へんこうされるたびに更新こうしんする必要ひつようがある。したがって、インデックスはデータアクセスを高速こうそくできるが、データの保守ほしゅおそくなる。これらの2つの属性ぞくせいは、特定とくていのインデックスがコストに見合みあうかどうかを決定けっていする。

脚注きゃくちゅう

[編集へんしゅう]

 

  1. ^ Lightstone, S.; Teorey, T.; Nadeau, T. (2007). Physical Database Design: the database professional's guide to exploiting indexes, views, storage, and more. Morgan Kaufmann Press. ISBN 978-0-12-369389-1 

外部がいぶリンク

[編集へんしゅう]