(O+P)ut

習うより慣れろ、Practice makes perfect。この言葉をモットーに、Slerで働く若手インフラエンジニアが、学んだ知識を【 (O+P)ut = OutPut 】していく場です。

【超絶入門】データベースとインスタンスの違い

データベースとインスタンス、二つのキーワードの関わりについて簡単に説明してみます。

よく見る全体像の図は以下のようなものだと思います。(以下、図①)

Oracleのアーキテクチャより抜粋
これをもう一段階簡略化し、ユーザーを入れ込んだ図がこちらになります。(以下、図②)
f:id:mtiit:20170723180955j:plain

では、こちらの図②を軸に説明してみます。

1)インスタンスとは

インスタンスは、データベースとユーザーの中間に位置しており、ユーザーはデータベースを直接操作する代わりにインスタンスを介して操作することになります。インスタンスの中身に関しては、図①にあるように SGA(=メモリ構造) と プロセス群 で構成されています。
細かいことは置いておきますが、インスタンスを介して操作を行うことは、データの安全性やパフォ-マンスの向上につながります。インスタンスは、サーバーにいます。

一つのデータベースには、基本的に一つのインスタンスです。

2)データベースとは

こちらはイメージがしやすいかもしれません。いわゆる、データファイルをはじめとする物理ファイルです。図①にもその他とありますが、データベースに対する変更情報を管理するファイル等々があります。データベースはストレージにいます。

以上が超絶入門です。


以下はおまけです。データベースとインスタンスが1:1ではない例とメリットです。

f:id:mtiit:20170723223913j:plain

これのメリットは、複数のデータベースをより少ないメモリで管理できることにあります。
逆にデメリットとしては、インスタンスの障害がそれに紐づくすべてのデータベースに影響を与えてしまいます。


f:id:mtiit:20170723223923j:plain
これのメリットは、インスタンスの停止等の障害にも対応することができる点にあります。
逆にデメリットとしては、メモリやプロセス等の多くの資源が必要となります。

もちろん、この二つを組み合わせた複数インスタンス→複数データベースもあります。もっと細かい話に関しては、別の記事をご参考ください。

以上です。