(O+P)ut

(O+P)ut

(O+P)ut = Out + Put >> OutPut

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

はじめに

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




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

Oracleのアーキテクチャより抜粋


こちらを見れば、大体のことが分かるのですが初学者にはイメージがつかないと思います。


そこで、簡略化のために図①には登場しないユーザーを入れ込んだ図がこちらになります。
(以下、図②)

f:id:mtiit:20181117233920p:plain


インスタンスとデータベースの違いを、図②を軸に説明してみます。



インスタンスとは

インスタンスとは何でしょうか。
まずは、インスタンスの立ち位置ですがデータベースとユーザーの中間に位置しています。

つまり、ユーザーはデータベースを直接操作する代わりにインスタンスを介して操作します。

そして、インスタンスの中身に関しては、図①にあるように SGA(=メモリ構造) と プロセス群 で構成されています。

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


インスタンスはサーバーにプロセスとして存在しており、ユーザからは一般的にリモートで接続しにいくケースがよく見られます。

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


データベースとは

こちらはイメージがしやすいかもしれません。

いわゆる、データファイルをはじめとする物理ファイルです。
図①にもその他とありますが、データベースに対する変更情報を管理するファイル等々もあります。

データベースは、ファイルとしてストレージに保管されています。
インスタンスがメモリにのっている事からも、まったく別物です。

※データベースの中がどうなっているのかは、下記で少し触れていますのでご参考まで

要は、インスタンスはデータベース本体に接続するためのプロセス と覚えておけば事足りると思います。

以下に、おまけとしてインスタンスとデータベースが1:1ではない例を挙げています。


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

f:id:mtiit:20181117234613p:plain

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


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

f:id:mtiit:20181117234332p:plain

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

もちろん、この二つを組み合わせた複数インスタンス→複数データベースもあります。