(O+P)ut

(O+P)ut

(O+P)ut = OutPut

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

はじめに

データベースインスタンス、二つのキーワードの関わりについて簡単に説明してみます。
入門レベルで記載するので、特にバックグラウンドの知識は不要です。

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

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

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



インスタンスとは

インスタンスは、データベースとユーザーの中間に位置しており、ユーザーはデータベースを直接操作する代わりにインスタンスを介して操作することになります。インスタンスの中身に関しては、図①にあるように SGA(=メモリ構造) と プロセス群 で構成されています。

細かいことは置いておきますが、インスタンスを介して操作を行うことは、データの安全性やパフォ-マンスの向上につながります。

インスタンスは、サーバーにプロセスとして存在しており、一つのインスタンスには接続用のポートが一つ用意されているというのも覚えておくとよいかもしれません。

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


データベースとは

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

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

おまけ

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

単一インスタンス→複数データベース

f:id:mtiit:20170723223913j:plain

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


複数インスタンス→単一データベース

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

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


以上です。