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

img_pickup_111122_01.jpg
Oracle Database 11g R2では、従来のシステム設計のコンセプトを大きく変える新技術が用いられているように、データベースそのものが大きな進化を遂げている。データベースが進化するということは、それを扱うデータベースエンジニアの役割も変わってくるということだ。

本記事では引き続き、最新のOracle Database技術を扱うデータベースエンジニアが、担っていく必要がある役割について、システム構築のプロジェクトを想定して述べてきたい。

■システムの非機能要件に対するアプローチ

 前回の記事で紹介したように、システム構築の基本設計フェーズにおいて検討すべき点として、機能要件と非機能要件に分類される。
img_pickup_111122_02.png
 機能要件に基づく設計は主にアプリケーション・アーキテクトが行う分野である。近年では、例えばSOAによるアプリケーションのコンポーネント化と再利用性といったアプローチを行う場合もある。

 非機能要件に基づく設計は主にインフラ・アーキテクトが行う分野だ。ここで、各設計項目と、その中でデータベース・エンジニアが検討することを述べていきたい。

・性能設計・拡張設計

 性能設計においては、単位時間あたりのSQL実行量(Transaction Per Second)や、予測されるI/O量(IOPS)をもとにハードウェアの選定を行うことが一般的だ。しかし、初期見積もりからのトランザクションの増加、あるいはビジネスの変化(例:企業合併)によって、当初想定を上回る負荷量に対応することが求められる場合がある。したがって、拡張可能なアーキテクチャを検討するべきであるが、拡張のアプローチとしては2パターンが挙げられる。

・スケールアップのアプローチ
・スケールアウトのアプローチ
img_pickup_111122_03.png
スケールアップのアプローチとスケールアウトのアプローチ
 スケールアップのアプローチでは、ハードウェアにCPUやメモリを増設し、サーバそのものの処理力を上げるアプローチである。あるいは、主にUNIXサーバで用いられているハードウェアの機能である論理パーティションを用いて、ハードウェアリソースを制御しながら必要に応じて必要性能を割り当てる、といったアプローチである。

 一方で、スケールアウトのアプローチでは、例えばOracleのGRID技術を用いて複数のリソースを統合し、リソース(サービス)としてアプリケーションに割り当てるアプローチである。

 OracleのGRID技術には、DBサーバをを仮想的に統合し、アプリケーションに分配する技術(Grid Infrastructure / Real Application Clusters)や、複数のストレージを仮想的に統合する技術(Automatic Storage Management)、そしてそれらを統合管理する運用ツール(Enterprise Manager)が含まれる。

 データベースエンジニアのための情報提供サイトであるOTNセミナーオンデマンドではさまざまなOracle技術情報が提供されており、セミナー形式で受講することが可能だ。その中で、今回紹介したグリッド技術に関する資料も充実している。
img_pickup_111122_06.jpg
[DB構築編 Oracle Real Application Clusters]
 ここで紹介されているグリッドの技術をシステム設計の中に取り入れることによって、スケーラブルなシステムに対するアプローチが可能になるだろう。

・可用性設計
 特にミッションクリティカル(基幹系)の業務におけるデータベース・システムでは高可用性を担保し、システム停止を極小化することが求められる。まずシステム設計において重要なことは、単一障害点(Single Point Of Failure)を作らないことだ。そのためには、データベースシステムの各コンポーネントを冗長化し、障害(物理的な障害、あるいは論理的な障害) が発生した場合においてもシステムを継続可能にすることが求められる。
img_pickup_111122_04.png
Single Point Of Failureの例
 また、データの確実なバックアップ、さらに最近では災害への対策の関心が高まっている。こういった可用性へのアプローチとして、かつてはハードウェアを2重化するアプローチや、ストレージの機能を用いたデータの転送が一般的であったが、データベースの機能によって一般的なコモディティ・ハードウェアを用いた高可用性の担保が可能になってきている。
img_pickup_111122_05.png
典型的なデータ遠隔地転送方式
 高可用性を担保するOracleの技術としては以下が挙げられる。

・ サーバのH/A機構をソフトウェアで保障するReal Application Clusters(RAC)
・ データの遠隔地バックアップ機能を提供するDataGuard
・ 物理バックアップのユーティリティであるRecovery Manager(RMAN) ・ データベースの論理破損に対応するためのフラッシュバック技術        など

 こういったソフトウェアを用いた可用性担保技術についても、OTNセミナー オンデマンドで要点を知ることができる。
[Oracle Database DBA 中級]
[DB構築編 - Oracle Data Guard]
 ここで紹介されている技術を用いることによって、データベース・エンジニアの知見を用いてシステムの可用性設計に携わることができるだろう。

・セキュリティ設計
 企業システムにおいて、データのセキュリティを保護すること、適切なユーザが適切なデータを閲覧可能であること、また有事の際に証跡を辿れることがますます強く求められている。かつては、データの暗号化を行うためには専用のハードウェアが必要であったり、データベース監査のためには専用の機構を構築することが一般的であった。その敷居の高さ故に、セキュリティ機構の実装に積極的でない場合もあったのではないだろうか。

 データベースのセキュリティ対策はバージョンが上がるたびに機能追加されており、標準で設定されているセキュリティ設定もより厳しいものとなっている。例えば、Oracle Database 11g ではデフォルトプロファイルのセキュリティ強化や、パスワードの大文字小文字区別といった変更が加えられている。また、データベースのオプション(Advanced Security)を用いることによって、データの暗号化や通信の暗号化、まで可能になっているのだ。
[Oracle Database 初心者]
[Oracle Database DBA 中級]
 ますます高まるセキュリティへの対応として、開発環境や準本番環境で本番データを利用する際になる「データマスキング」を行うオプションや、データベースの外部からDBを保護するFireWallといった新しい機構にも注目が集まっている。
[DB構築編 - セキュリティ]
 セキュリティに関しては、セキュリティの専門チームが企画・設計する場合も多くあるだろう。いっぽうで、データベースエンジニアが、データベースの機能については最もよく理解しているのである。セキュリティのプロフェッショナルと共に、データベースエンジニアがデータベースの機能拡張に取り組んでいくことによって、よりよいセキュアなシステムが実現できるだろう。

 このように、データベースの機能をシステムの基本設計に取り込むことによって、データベースエンジニアが企業インフラの非機能要件設計に参画できるのだ。つまり、データベース・アーキテクトとして活躍できるということだ。

 なお、各機能の使用にあたってはOracle DatabaseのエディションやOptionの使用が必要になる場合がある。以下の資料にエディションやOptionの基本的な考え方についてまとめられている。
[OracleDirectお悩み解決 - エディション選定]
 さて、ここまでシステム構築におけるデータベースエンジニアの役割について述べてきたが、システムのライフサイクルにおいて、長期的に重要になってくるのが運用にかかるコストや、障害発生時の体制だ。次回は運用フェーズにおけるデータベースエンジニアの役割について述べていきたい。
thmL-products_yagi.jpg
イラスト:岡戸妃里
■矢木 覚(a member of Oracle ACEs)
SIerでOracle Databaseの最新技術を用いた、企業システムの基幹システム設計/構築 に携わる。大規模RACやOracle Exadataによるシステム設計・Consolidationを行ってきた。その経験を基に、現在ではオラクルの技術を広めるエヴァンジェリストとして活動中
《Oracle ACE 矢木の部屋》シリーズをお見逃しなく!