どうも、皆さん
コンテナ技術が話題になってから数年、仕事でも目にする機会が増えているのではないでしょうか。
・そもそもコンテナ技術をよく知らない
・コンテナ技術を使ったDBを構築しろと言われたがどこから手を付ければいいか分からない
・何となくは知っているが、コンテナ技術の良さがイマイチ分からない
そんな悩みを抱える方に向けてコンテナ技術、特にOracle Databaseのコンテナ技術について解説していきたいと思います。
目次
この記事でわかる事 コンテナ技術ってなに? Oracle Databaseのコンテナ技術はどんなもの? >⼀般的なコンテナとOracle Databaseのコンテナ技術(マルチテナントアーキテクチャ)の違い >Oracle Databaseの今までのデータベースとマルチテナント・コンテナ・データベース >今までのデータベース(非CDB構成) >マルチテナント・コンテナ・データベース(CDB構成) Oracle Databaseでコンテナ技術を使うメリット >データベースの統合が容易 >ハードウェアリソースの節約 >メンテナンスの簡略化が可能 Oracle Databaseでコンテナ技術を使うデメリット >運⽤手順の見直しが必要 >単体のデータベースでは効果が限定的 まとめ |
この記事でわかる事
本記事では以下について理解を深めることができます。
・コンテナ技術
・Oracle Databaseのコンテナ技術
コンテナ技術ってなに?
皆さん、コンテナって知っていますか?
多くの⼈が「コンテナ」と聞いて、まず思い浮かぶのは貨物船に積まれているコンテナではないでしょうか。
流通業では貨物コンテナという統⼀された規格の⼊れ物を使うことで⼤量の物資を効率的に安価に輸送することが可能になります。
ITのコンテナ技術も、そのコンテナに似ています。
OS上に存在しているアプリケーションやミドルウェア、プロセスなどの⼤量のリソース(貨物)を論理的な⼊れ物に格納することで効率的に管理することを可能にする。
これがコンテナ技術の概要です。
管理するだけでなく、別の保管場所(他のサーバなど)にリソースを移動(輸送)することも可能なので⽂字通り「コンテナ」というわけです。
Oracle Databaseのコンテナ技術はどんなもの?
コンテナについてのイメージが何となく掴めたところでOracle Databaseのコンテナ技術について紹介していきます。
⼀般的なコンテナとOracle Databaseのコンテナ技術(マルチテナントアーキテクチャ)の違い
⼀般的なコンテナの説明ではOS上のアプリケーションやミドルウェアをコンテナ化―1つのグループ―として移動、管理することについて記載されているものが多いです。
Oracle Databaseのコンテナ技術はデータベースそのものをコンテナ化して管理する点が違います。
この技術のことをマルチテナント・アーキテクチャと呼ぶこともあります。
Oracle Databaseの今までのデータベースとマルチテナント・コンテナ・データベース
今までのデータベース(非CDB構成)
コンテナ技術は新しく出て来た技術ですので、コンテナ技術が使用されていない従来のデータベースが存在しています。
Oracle Databaseでは従来のデータベース構成のこと⾮CDB構成などと呼び、 以下の画像にあるように
①DBへのアクセスを受け取るリスナー
②SGA・PGA・バックグラウンドプロセスなどから構成されるインスタンス
③制御ファイル、データファイル、オンラインREDOログなどのファイル群
から構成されています。
※厳密には、インスタンスに含まれていないプロセスや設定ファイルなど記載されていないものもあるのですが、分かりやすくするために割愛しています。
従来のOracle Databaseのアーキテクチャについて詳しく知りたい⽅は弊社の「ながら読みで基礎力アップ!シリーズ」記事をご覧ください。
ながら読みで基礎力アップ!シリーズ
マルチテナント・コンテナ・データベース(CDB構成)
次はコンテナ技術を使用したデータベースについてです。
Oracle Databaseでコンテナ技術を使用したデータベースのことをマルチテナント・コンテナ・データベースまたはCDB構成と呼びます。
マルチテナント・コンテナ・データベースは以下の要素から構成されています。
①DBへの通信を受け取るリスナー
②SGA・PGA・バックグラウンドプロセスからなるインスタンス
③制御ファイル・データファイル・オンラインREDOログなどのファイル群
④業務データを格納するためのPDB
⑤PDBを管理するためのCDB
従来のデータベースと共通している部分が多いですが、データ部分にCDBとPDBが登場している点が大きな違いです。
このCDB、PDBはコンテナ技術を語る上で外せないワードなのでもう少し説明していきます。
CDBとは
CDBというのはコンテナ・データベースの略で、後述するPDBを管理するコンテナ内の親⽟のような存在です。
管理が主な⽬的なので実際の業務に使われる重要なデータは保持していません。
「コンテナ」とついていますが貨物コンテナのように貨物(業務データ)を入れるわけではないので
さながら、貨物コンテナの管理人と言ったところでしょうか。
PDBとは
PDBというのはプラガブル・データベースの略で、実際の業務データが格納されます。
従来のデータベースに相当する存在で、データ更新や起動停止などを各PDB毎に独立して行うことができます。
他のCDB上へ移動させることも可能で、別のサーバ上に簡単に引っ越しすることができます。
つまり「貨物コンテナ」にあたる部分です。
補足:PDB・PDBシード・アプリケーションPDBについて PDBにはPDBシードとアプリケーションPDBという兄弟的な存在がいます。 PDBシードはPDBを作成する際に元にすることが出来るテンプレート的な存在です。 アプリケーションPDBにはアプリケーションにとって便利な機能が追加されたPDBなのですが、複雑になるので説明は割愛します。 PDBと付いていますが提供する機能が異なるので混同しないように注意が必要です。 引用:Oracle Database 19c Multitenant管理者ガイド 3 マルチテナント環境の構成と管理の概要 |
Oracle Databaseでコンテナ技術を使うメリット
マルチテナント・アーキテクチャについて紹介したところで、Oracle Databaseでコンテナ技術を使う利点に触れていきます。
データベースの統合が容易
マルチテナント・アーキテクチャは従来のOracle Databaseと互換性を持っています。
また、従来のデータベースはPDBに相当するため多くの場合、既存のデータに修正を加えることなく多数のデータベースを一つに統合することが可能です。
ハードウェアリソースの節約
従来のデータベースは原則的にインスタンスとデータベースを1:1で構成する必要があります。
そのため、今までは1つのサーバでデータベースを管理する場合、データベースの数だけOracle Databaseをインストールする必要がありました。
マルチテナント・アーキテクチャでは、その制約がなくなり多数のデータベースを1つのインスタンスで管理できるようになっています。
つまり、⾮CDB構成よりも消費するハードウェアリソース(CPUやメモリ、ディスク容量等)を抑えることが可能になっています。
メンテナンスの簡略化が可能
多数のデータベースを1つのサーバに集約することで、今までサーバ毎に行っていたパッチ適用などのメンテナンス作業が減り工数を削減することが可能になります。
加えて、PDBはそれぞれ独立したデータベースとして扱われるており他のデータベース/サービスを停止せずに特定のデータベースだけメンテナンス(追加・削除・再起動など)を行う事も可能です。
Oracle Databaseでコンテナ技術を使うデメリット
次はデメリットについて触れていきます。
運⽤手順の見直しが必要
非CDB構成からCDB構成に変更する際には新しい機能が追加されているため、従来から変更されているコマンドが存在しており運用手順を見直す必要性があります。
ただし、従来と同じコマンドも多くあり手順の修正が軽微で済む場合もあるでしょう。
単体のデータベースでは効果が限定的
既存のデータベースが1つしかない場合、リソースの節約やメンテナンス・管理を簡略化する効果はあまり望めません。
まとめ
ここまでコンテナ技術について簡単に説明してきました。
コンテナ技術のポイントは以下の通りです。
コンテナ技術のポイント ・コンテナ技術とは貨物コンテナのように⼤量のリソースを効率的に管理・移動するための技術 ・Oracle Databaseのコンテナはアプリケーションやミドルウェアの代わりにデータベースを効率的に管理する ・Oracle Databaseのコンテナでは貨物コンテナを集積・管理する管理人にあたるCDBと、貨物コンテナに相当するPDBがある ・コンテナ技術を活用することで複数のデータベースの管理が楽になる ・運用面の見直しが必要になる |
この記事でコンテナ...ひいてはOracle Databaseのコンテナ技術について少しでも理解を深めてもらえたら幸いです。
以上、Re:Q でした。
いまさら遅い?Oracle Databaseのコンテナ技術