(O+P)ut

OutPut Log by SE in SIer



(O+P)ut

Output Log by SE

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

スポンサーリンク

はじめに

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

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

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

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

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

f:id:mtiit:20190126150720p:plain

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

インスタンスとは

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

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

よって、一般的には「インスタンス作成」→「データベース作成」の順です。
もしくはデータベースが作成されると同時にインスタンスも自動で作成されます。

インスタンスの中身に関しては、図①にあるように SGA(=メモリ構造) と プロセス群 が主な構成要素です。

わざわざインスタンスを介してデータを操作する理由はデータの安全性やパフォ-マンスの向上につながるからです。
ワンクッション挟むことで、不整合が起きないように一元的に管理したり同じ問い合わせに対してはメモリに保持した情報で高速に応対するイメージです。

使用例としては、インスタンスがサーバーにプロセスとして存在しており、ユーザはクライアントとしてリモートで接続しにいくケースがよく見られます。

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

データベースとは

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

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

データベースはファイルとしてストレージに保管されていますので、メモリ上にプロセスとして存在しているインスタンスとは別個であることを覚えておくと良いと思います。
データベースと一括りにいっても、その中には表スペースやインデックスなどまた難しい用語が登場しますが本記事では割愛します。


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

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


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

f:id:mtiit:20190126151948p:plain

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

ちなみに、データベースを分ける必要があるのはデータベース毎の設定項目があるからです。
テーブルAとテーブルB、同じ設定で良ければデータベースも同一で良いですがそうでない場面もあります。

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

f:id:mtiit:20190126152539p:plain

こちらは冗長化を行うケースです。
これのメリットは、単一のインスタンス停止等の障害においてもデータベースのアクセスが可能である点にあります。
逆にデメリットとしては、メモリやプロセス等の多くの資源が必要となります。
このような場合は、インスタンスを用意するためにサーバ筐体毎分けるのが一般的です。同じ筐体の場合は、メモリ障害が起きれば冗長化の恩恵を受けることができずにダウンしてしまいます。

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

以上、データベースとインスタンスの違いについての入門記事でした。


他の記事を読む