Oracle ACE 矢木の部屋 第2回
これからのデータベースエンジニアのスキルパスとは?

Oracle Database 11g R2では、従来のシステム設計のコンセプトを大きく変える新技術が用いられているように、データベースそのものが大きな進化を遂げている。データベースが進化するということは、それを扱うデータベースエンジニアの役割も変わってくるということだ。
本記事では引き続き、最新のOracle Database技術を扱うデータベースエンジニアが、担っていく必要がある役割について、システム構築のプロジェクトを想定して述べてきたい。
■システムの非機能要件に対するアプローチ
前回の記事で紹介したように、システム構築の基本設計フェーズにおいて検討すべき点として、機能要件と非機能要件に分類される。
本記事では引き続き、最新のOracle Database技術を扱うデータベースエンジニアが、担っていく必要がある役割について、システム構築のプロジェクトを想定して述べてきたい。
■システムの非機能要件に対するアプローチ
前回の記事で紹介したように、システム構築の基本設計フェーズにおいて検討すべき点として、機能要件と非機能要件に分類される。

機能要件に基づく設計は主にアプリケーション・アーキテクトが行う分野である。近年では、例えばSOAによるアプリケーションのコンポーネント化と再利用性といったアプローチを行う場合もある。
非機能要件に基づく設計は主にインフラ・アーキテクトが行う分野だ。ここで、各設計項目と、その中でデータベース・エンジニアが検討することを述べていきたい。
・性能設計・拡張設計
性能設計においては、単位時間あたりのSQL実行量(Transaction Per Second)や、予測されるI/O量(IOPS)をもとにハードウェアの選定を行うことが一般的だ。しかし、初期見積もりからのトランザクションの増加、あるいはビジネスの変化(例:企業合併)によって、当初想定を上回る負荷量に対応することが求められる場合がある。したがって、拡張可能なアーキテクチャを検討するべきであるが、拡張のアプローチとしては2パターンが挙げられる。
・スケールアップのアプローチ
・スケールアウトのアプローチ
非機能要件に基づく設計は主にインフラ・アーキテクトが行う分野だ。ここで、各設計項目と、その中でデータベース・エンジニアが検討することを述べていきたい。
・性能設計・拡張設計
性能設計においては、単位時間あたりのSQL実行量(Transaction Per Second)や、予測されるI/O量(IOPS)をもとにハードウェアの選定を行うことが一般的だ。しかし、初期見積もりからのトランザクションの増加、あるいはビジネスの変化(例:企業合併)によって、当初想定を上回る負荷量に対応することが求められる場合がある。したがって、拡張可能なアーキテクチャを検討するべきであるが、拡張のアプローチとしては2パターンが挙げられる。
・スケールアップのアプローチ
・スケールアウトのアプローチ

スケールアップのアプローチとスケールアウトのアプローチ
スケールアップのアプローチでは、ハードウェアにCPUやメモリを増設し、サーバそのものの処理力を上げるアプローチである。あるいは、主にUNIXサーバで用いられているハードウェアの機能である論理パーティションを用いて、ハードウェアリソースを制御しながら必要に応じて必要性能を割り当てる、といったアプローチである。
一方で、スケールアウトのアプローチでは、例えばOracleのGRID技術を用いて複数のリソースを統合し、リソース(サービス)としてアプリケーションに割り当てるアプローチである。
OracleのGRID技術には、DBサーバをを仮想的に統合し、アプリケーションに分配する技術(Grid Infrastructure / Real Application Clusters)や、複数のストレージを仮想的に統合する技術(Automatic Storage Management)、そしてそれらを統合管理する運用ツール(Enterprise Manager)が含まれる。
データベースエンジニアのための情報提供サイトであるOTNセミナーオンデマンドではさまざまなOracle技術情報が提供されており、セミナー形式で受講することが可能だ。その中で、今回紹介したグリッド技術に関する資料も充実している。
一方で、スケールアウトのアプローチでは、例えばOracleのGRID技術を用いて複数のリソースを統合し、リソース(サービス)としてアプリケーションに割り当てるアプローチである。
OracleのGRID技術には、DBサーバをを仮想的に統合し、アプリケーションに分配する技術(Grid Infrastructure / Real Application Clusters)や、複数のストレージを仮想的に統合する技術(Automatic Storage Management)、そしてそれらを統合管理する運用ツール(Enterprise Manager)が含まれる。
データベースエンジニアのための情報提供サイトであるOTNセミナーオンデマンドではさまざまなOracle技術情報が提供されており、セミナー形式で受講することが可能だ。その中で、今回紹介したグリッド技術に関する資料も充実している。
[DB構築編 Oracle Real Application Clusters]
- 【実践!! 高可用性システム構築 ~RAC基本編~】
(http://blogs.oracle.com/oracle4engineer/entry/_rac) - 【実践!! 高可用性システム構築 ~RAC詳細編 ~】
(http://blogs.oracle.com/oracle4engineer/entry/_rac_2) - 【RACを越えた!!Oracle Database 11g Release2のOracle Grid Infrastructureを理解する】
(http://blogs.oracle.com/oracle4engineer/entry/rac_oracle_database_11g_release2oracle_grid_infrastructure) - 【DBAの"仕事が楽になる" これからの物理設計と領域管理】
(http://blogs.oracle.com/oracle4engineer/entry/dba) - 【だから安心!「Oracle ASM」の内部動作を理解しよう】
(http://blogs.oracle.com/oracle4engineer/entry/material_asm_architecture)
ここで紹介されているグリッドの技術をシステム設計の中に取り入れることによって、スケーラブルなシステムに対するアプローチが可能になるだろう。
・可用性設計
特にミッションクリティカル(基幹系)の業務におけるデータベース・システムでは高可用性を担保し、システム停止を極小化することが求められる。まずシステム設計において重要なことは、単一障害点(Single Point Of Failure)を作らないことだ。そのためには、データベースシステムの各コンポーネントを冗長化し、障害(物理的な障害、あるいは論理的な障害) が発生した場合においてもシステムを継続可能にすることが求められる。
・可用性設計
特にミッションクリティカル(基幹系)の業務におけるデータベース・システムでは高可用性を担保し、システム停止を極小化することが求められる。まずシステム設計において重要なことは、単一障害点(Single Point Of Failure)を作らないことだ。そのためには、データベースシステムの各コンポーネントを冗長化し、障害(物理的な障害、あるいは論理的な障害) が発生した場合においてもシステムを継続可能にすることが求められる。

Single Point Of Failureの例
また、データの確実なバックアップ、さらに最近では災害への対策の関心が高まっている。こういった可用性へのアプローチとして、かつてはハードウェアを2重化するアプローチや、ストレージの機能を用いたデータの転送が一般的であったが、データベースの機能によって一般的なコモディティ・ハードウェアを用いた高可用性の担保が可能になってきている。

典型的なデータ遠隔地転送方式
高可用性を担保するOracleの技術としては以下が挙げられる。
・ サーバのH/A機構をソフトウェアで保障するReal Application Clusters(RAC)
・ データの遠隔地バックアップ機能を提供するDataGuard
・ 物理バックアップのユーティリティであるRecovery Manager(RMAN) ・ データベースの論理破損に対応するためのフラッシュバック技術 など
こういったソフトウェアを用いた可用性担保技術についても、OTNセミナー オンデマンドで要点を知ることができる。
・ サーバのH/A機構をソフトウェアで保障するReal Application Clusters(RAC)
・ データの遠隔地バックアップ機能を提供するDataGuard
・ 物理バックアップのユーティリティであるRecovery Manager(RMAN) ・ データベースの論理破損に対応するためのフラッシュバック技術 など
こういったソフトウェアを用いた可用性担保技術についても、OTNセミナー オンデマンドで要点を知ることができる。
[Oracle Database DBA 中級]
- 【今さら聞けない!?バックアップ・リカバリ入門】
(http://blogs.oracle.com/oracle4engineer/entry/post) - 【実践バックアップ・リカバリ - 一歩進んだRMANの使い方】
(http://blogs.oracle.com/oracle4engineer/entry/_rman) - 【実践!!バックアップ・リカバリ ~ユーザー手動 VS RMAN コマンドライン対決~】
(http://blogs.oracle.com/oracle4engineer/entry/_vs_rman) - 【実践バックアップリカバリ-これだけは知っておきたい傾向と対策】
(http://blogs.oracle.com/oracle4engineer/entry/post_2) - 【実践!!バックアップ・リカバリ-フラッシュリカバリ大全-】
(http://blogs.oracle.com/oracle4engineer/entry/post_3)
[DB構築編 - Oracle Data Guard]
- 【実践!!高可用性システム構築-DataGuard基本編-】
(http://blogs.oracle.com/oracle4engineer/entry/_data_guard) - 【著者登場!これは使えるOracle新機能活用術 -Data Guard編-】
(http://blogs.oracle.com/oracle4engineer/entry/oracle_data_guard)
ここで紹介されている技術を用いることによって、データベース・エンジニアの知見を用いてシステムの可用性設計に携わることができるだろう。
・セキュリティ設計
企業システムにおいて、データのセキュリティを保護すること、適切なユーザが適切なデータを閲覧可能であること、また有事の際に証跡を辿れることがますます強く求められている。かつては、データの暗号化を行うためには専用のハードウェアが必要であったり、データベース監査のためには専用の機構を構築することが一般的であった。その敷居の高さ故に、セキュリティ機構の実装に積極的でない場合もあったのではないだろうか。
データベースのセキュリティ対策はバージョンが上がるたびに機能追加されており、標準で設定されているセキュリティ設定もより厳しいものとなっている。例えば、Oracle Database 11g ではデフォルトプロファイルのセキュリティ強化や、パスワードの大文字小文字区別といった変更が加えられている。また、データベースのオプション(Advanced Security)を用いることによって、データの暗号化や通信の暗号化、まで可能になっているのだ。
・セキュリティ設計
企業システムにおいて、データのセキュリティを保護すること、適切なユーザが適切なデータを閲覧可能であること、また有事の際に証跡を辿れることがますます強く求められている。かつては、データの暗号化を行うためには専用のハードウェアが必要であったり、データベース監査のためには専用の機構を構築することが一般的であった。その敷居の高さ故に、セキュリティ機構の実装に積極的でない場合もあったのではないだろうか。
データベースのセキュリティ対策はバージョンが上がるたびに機能追加されており、標準で設定されているセキュリティ設定もより厳しいものとなっている。例えば、Oracle Database 11g ではデフォルトプロファイルのセキュリティ強化や、パスワードの大文字小文字区別といった変更が加えられている。また、データベースのオプション(Advanced Security)を用いることによって、データの暗号化や通信の暗号化、まで可能になっているのだ。
[Oracle Database 初心者]
- 【今さら聞けない!? セキュリティ対策】
(http://blogs.oracle.com/oracle4engineer/entry/post_49)
[Oracle Database DBA 中級]
- 【実践!!セキュリティ~Oracle Databaseの監査~】
(http://blogs.oracle.com/oracle4engineer/entry/_oracle_database) - 【実践!!セキュリティ~OracleDatabaseの暗号化~】
(http://blogs.oracle.com/oracle4engineer/entry/material_security_encryption)
ますます高まるセキュリティへの対応として、開発環境や準本番環境で本番データを利用する際になる「データマスキング」を行うオプションや、データベースの外部からDBを保護するFireWallといった新しい機構にも注目が集まっている。
[DB構築編 - セキュリティ]
- 【新製品 Oracle Database Firewallの全貌をご紹介】
(http://blogs.oracle.com/oracle4engineer/entry/セミナー動画_資料_oracle_database_firewallの全貌をご紹介) - 【データベースのデータを安全に使用するための暗号化とマスキング】
(http://blogs.oracle.com/oracle4engineer/entry/material_masking_encryption)
セキュリティに関しては、セキュリティの専門チームが企画・設計する場合も多くあるだろう。いっぽうで、データベースエンジニアが、データベースの機能については最もよく理解しているのである。セキュリティのプロフェッショナルと共に、データベースエンジニアがデータベースの機能拡張に取り組んでいくことによって、よりよいセキュアなシステムが実現できるだろう。
このように、データベースの機能をシステムの基本設計に取り込むことによって、データベースエンジニアが企業インフラの非機能要件設計に参画できるのだ。つまり、データベース・アーキテクトとして活躍できるということだ。
なお、各機能の使用にあたってはOracle DatabaseのエディションやOptionの使用が必要になる場合がある。以下の資料にエディションやOptionの基本的な考え方についてまとめられている。
このように、データベースの機能をシステムの基本設計に取り込むことによって、データベースエンジニアが企業インフラの非機能要件設計に参画できるのだ。つまり、データベース・アーキテクトとして活躍できるということだ。
なお、各機能の使用にあたってはOracle DatabaseのエディションやOptionの使用が必要になる場合がある。以下の資料にエディションやOptionの基本的な考え方についてまとめられている。
[OracleDirectお悩み解決 - エディション選定]
- 【データベースの選び方-SE・EE選定ポイント】
(http://blogs.oracle.com/oracle4engineer/entry/_seee)
さて、ここまでシステム構築におけるデータベースエンジニアの役割について述べてきたが、システムのライフサイクルにおいて、長期的に重要になってくるのが運用にかかるコストや、障害発生時の体制だ。次回は運用フェーズにおけるデータベースエンジニアの役割について述べていきたい。

イラスト:岡戸妃里
■矢木 覚(a member of Oracle ACEs)
SIerでOracle Databaseの最新技術を用いた、企業システムの基幹システム設計/構築 に携わる。大規模RACやOracle Exadataによるシステム設計・Consolidationを行ってきた。その経験を基に、現在ではオラクルの技術を広めるエヴァンジェリストとして活動中
SIerでOracle Databaseの最新技術を用いた、企業システムの基幹システム設計/構築 に携わる。大規模RACやOracle Exadataによるシステム設計・Consolidationを行ってきた。その経験を基に、現在ではオラクルの技術を広めるエヴァンジェリストとして活動中
《Oracle ACE 矢木の部屋》シリーズをお見逃しなく!
- 第1回 これからの データベースエンジニアのスキルパスとは?
- 第2回 これからの データベースエンジニアのスキルパスとは?
- 第3回 次世代のデータベースエンジニアを目指すために
- 第4回 次世代のデータベースエンジニアを目指すために

