データベース別インスタンスの関係性

 2020.12.25  株式会社システムインテグレータ

SI Object Browserをご利用のユーザーの中には、自身の作業で複数種類のデータベースを利用している方もいらっしゃるのではないでしょうか。

複数種類のデータベースを扱っていると、それぞれのキーワードに対する意味が少しずつ異なっていて混乱することもあるのではないかと思います。

今回は少し毛色を変えて、キーワード「インスタンス、データベース、スキーマ」の関係について、各データベース(OracleSQL ServerPostgreSQL)を比較しながら見ていきます。

Oracleの関連性

Oracleにおける「インスタンス、データベース、スキーマ」の関係性は以下の通りとなります。

データベース別インスタンスの関係性 1- Oracleの関連性 -

Oracleの関係性において特筆すべき点は以下です。
 ・インスタンスとデータベースは1対1でほぼ同義
 ・各インスタンス内に複数スキーマを作成可能
 ・スキーマとユーザーは1対1でほぼ同義

データベース、インスタンスというキーワードが混乱してしまう理由の一つが、このOracleの場合かと思います。
クラウドサービスを利用している場合、サーバーのことをインスタンスと読んだりすることもあるので、しっかり読み替えて表現した方が良いですね。

また、Oracleを利用したことがある方はご存じかと思いますが、スキーマとユーザーが1対1の関係であることも特徴の一つです。
Oracle18c以降では、「スキーマ限定アカウント」というものを作成できるようになっており、ログインを伴わないユーザーにすることで、スキーマだけを作れるようになっています。

なお、SI Object Browser for Oracleのオブジェクトツリーでは、デフォルトで以下の表示となっています。
データベース > スキーマ > オブジェクト

データベース別インスタンスの関係性 2- オブジェクトツリー(SI Object Browser for Oracle) -

また、データベースの管理もデータベース情報画面から行うことが可能です。

データベース別インスタンスの関係性 3- オブジェクトツリー(SI Object Browser for Oracle) -

SQL Serverの関連性

SQL Serverにおける「インスタンス、データベース、スキーマ」の関係性は以下の通りとなります。

データベース別インスタンスの関係性 4- SQL Serverの関連性 -

SQL Serverの関係性において特筆すべき点は以下です。
 ・複数インスタンスを作成可能
 ・各インスタンス内に複数データベースを作成可能
 ・各データベース内に複数スキーマを作成可能
 ・ユーザーは「ログインユーザー」と「データベースユーザー」が存在

Oracleとは異なり、インスタンスとデータベースが分かれています。
また、複数のインスタンス管理が可能となっていることもあり、環境を分ける際の幅が広がっています。
インスタンス > データベース > スキーマ > オブジェクト という上下の関係性さえ覚えれば、比較的シンプルな構成かと思います。

注意点としては、上記構成の外になりますが、ユーザーの種類が2種類あることです。
 ・ログインユーザー:インスタンスにログインする
・データベースユーザー:データベースにログインする
上記構成の関係上、データベースを使うだけでも、2つのユーザーが必要になることになります。

なお、SI Object Browser for SQL Serverのオブジェクトツリーでは、デフォルトで以下の表示となっています。
インスタンス > データベース > オブジェクト

データベース別インスタンスの関係性 5- オブジェクトツリー(SI Object Browser for SQL Server) -

また、データベースの管理もデータベース情報画面から行うことが可能です。

データベース別インスタンスの関係性 6

-データベース情報(SI Object Browser for SQL Server) -

PostgreSQLの関連性

PostgreSQLにおける「インスタンス、データベース、スキーマ」の関係性は以下の通りとなります。

データベース別インスタンスの関係性 7- SQL Serverの関連性 -

PostgreSQLの関係性において特筆すべき点は以下です。
 ・公式の説明ではインスタンスが単一(複数インスタンスの起動自体は可能)
 ・各インスタンス内に複数データベースを作成可能
 ・各データベース内に複数スキーマを作成可能
 ・ユーザーはインスタンス毎に管理

SQL Serverとほぼ同様に見えますが、インスタンスは通常では単一になります。
また、ユーザーの管理はインスタンス毎に行い、種類が分かれることはありません。

オープンソースながら、スキーマとオブジェクトの関係性で見るとOracleと同様の管理も可能となっている、ということも移行の需要が増えている理由になっていると考えます。

なお、SI Object Browser for Postgresのオブジェクトツリーでは、デフォルトで以下の表示となっています。
データベース > スキーマ > オブジェクト

データベース別インスタンスの関係性 8- オブジェクトツリー(SI Object Browser for PostgreSQL) -

また、データベースの管理もサーバ情報画面から行うことが可能です。
(SI Object Browser for Postgresの場合はデータベースの新規作成は行えません。)

データベース別インスタンスの関係性 9- オブジェクトツリー(SI Object Browser for PostgreSQL) -

まとめ

いかがでしたか?今回はデータベース別にインスタンスの関係性を説明してきました。
サーバ1台に対するそれぞれの関係性をまとめると以下の通りです。

データベース別インスタンスの関係性 10

それぞれの構成を把握していないと、「インスタンス」と一言で言っても、誤解を招いてしまう可能性があります。
正しく情報を伝えるためにも、キーワードの認識を合わせておくのは大事なことだと考えます。
複数のデータベースを扱うプロジェクトでは、尚更この問題が浮き彫りになると思いますので、しっかりと把握、共有するようにしましょう。

トライアル版ダウンロード

RELATED POST関連記事


RECENT POST「【OBトコ】DBの勉強」の最新記事


【OBトコ】DBの勉強

データベースのスキーマを理解する

【OBトコ】DBの勉強

ビューとマテリアライズド・ビューの違いを理解する

【OBトコ】DBの勉強

Oracle 表領域を拡張してみよう

【OBトコ】DBの勉強

Oracle スケーラブルシーケンスの使い方を確認しよう

データベース別インスタンスの関係性
新規CTA