(O+P)ut

頭の整理のために、Slerで働く若手インフラエンジニアが、【 (O+P)ut = OutPut 】していく場です。

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

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

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

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

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




1)インスタンスとは

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

一つのデータベースには、基本的に一つのインスタンスが紐づきます。



2)データベースとは

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

※データベースの中がどうなっているのかは、下記で少し触れていますのでご参考まで
【超絶入門】表スペースと表の違い【データベース】 - (O+P)ut

ちなみにですが、データベースとインスタンスが1:1ではない例も紹介しておきます。

f:id:mtiit:20170723223913j:plain

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


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

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


以上です。