現代では、数百GB以上、多くの場合、数TB以上のデータを含む重要なデータベースを運用している企業は珍しくありません。これらの企業は、大規模データベース(VLDB)のサポートやメンテナンスという課題を抱えており、これらの課題に対応するための方法を考える必要があります。
この章では、VLDB計画の重要な要素であるパーティション化を中心に、VLDBの概要を説明します。
パーティション化を行うと、アプリケーションに対して完全に透過的なパーティションと呼ばれるより小規模で管理しやすい単位に分解することにより、大規模な表や索引のサポートにおける主な問題に対応できます。パーティション表にアクセスするために、SQL問合せやDML文を変更する必要はありません。ただし、パーティションの定義後にDDL文がアクセスおよび操作できるのは、表や索引全体ではなく、個々のパーティションです。これが、パーティション化により、大規模データベース・オブジェクトの管理が簡略化される仕組みです。
表または索引の各パーティションでは、列名、データ型および制約などの論理属性は同一である必要がありますが、圧縮の有効化や無効化、物理記憶域設定および表領域などの物理属性は異なってもかまいません。
パーティション化は、様々なタイプのアプリケーション、特に大量のデータを管理するアプリケーションに便利です。OLTPシステムでは管理性や可用性が向上し、データ・ウェアハウス・システムではパフォーマンスや管理性が向上します。
次にパーティション化の利点を示します。
表全体ではなくパーティション・レベルでのデータのロード、索引の作成や再作成、バックアップ/リカバリなどのデータ管理操作が可能です。これにより、これらの操作にかかる時間が大幅に削減されます。
問合せパフォーマンスが向上します。多くの場合、表全体ではなくパーティションのサブセットにアクセスすることで、問合せの結果を取得できます。一部の問合せでは、この技術(パーティション・プルーニング)により、パフォーマンスが大幅に向上します。
メンテナンス操作のスケジュールされた停止時間の影響を大幅に軽減できます。
パーティション・メンテナンス操作におけるパーティションの独立性により、同じ表または索引の異なるパーティションでメンテナンス操作を同時に実行できます。メンテナンス操作に影響されないパーティションに対しても、SELECT
操作やDML操作を同時に実行できます。
メンテナンス期間、リカバリ時間および障害の影響を低減するために、重要な表や索引がパーティションに分割されていると、重要なデータベースの可用性が向上します。
パラレル実行を行うと、リソース使用率が最適化され、実行時間が最短化されるという特定の利点があります。クラスタ環境におけるスケーラビリティの鍵は、パーティション化されたオブジェクトに対するパラレル実行です。パラレル実行は、DMLやDDLだけでなく問合せに対してもサポートされています。
パーティション化により、Oracle Database内でのデータ・アクセスが高速になります。データベースのデータが10GBか10TBかに関係なく、パーティション化によりデータ・アクセスを大幅に改善できます。パーティション化は、アプリケーションに変更を加えずに実装できます。たとえば、表にアクセスするSELECT
文やDML文を変更せずに、パーティション化されていない表をパーティション表に変換できます。パーティション化を使用するために、アプリケーション・コードをリライトする必要はありません。
大規模データベースには、最小絶対サイズはありません。VLDBはより小規模なデータベースと同じようなデータベースですが、その管理には固有の問題があります。それらの問題は、小規模なデータベースでは当然と考えられている、全体のサイズおよびそのサイズのシステムに対する操作実行のコスト・パフォーマンスに関連しています。
データベース・サイズの恒常的な増大に関連している傾向をいくつか示します。
長い間、システムは個別に開発されてきました。企業は、それらのシステムを結合することで、システムの維持費を削減できるだけでなく、複数の部門にまたがる分析も可能になる利点に注目しはじめました。データベースとアプリケーションの統合は、データベース・サイズが増大し続ける主要な要因の1つになっています。
多くの企業は、最小限の間データを保存するための具体的な要件を設定する規則に対応しています。一般的に、規則が、より多くのデータをより長い期間保存する原因になっています。
企業が組織的に成長することや、合併や吸収により成長することが、生成および処理されるデータ量の増大の原因になっています。同時に、日常業務でデータベースに依存するユーザー人口も増加します。
パーティション化は、大規模データベースを管理するための重要な機能です。データ量の増大は、大規模データベースでパーティション化が対応する基本的な問題です。また、パーティション化を行うことにより、特に表や索引の増大に伴い分断攻略テクニックを使用して、データベースの表や索引を管理できます。パーティション化は、管理またはハードウェア・リソースを必要以上に増やさずに、一定のパフォーマンスを維持しながら、データベースによる大規模なデータセットの見積りを可能にする機能です。第4章では、パーティション化実装に関する可用性、管理性およびパフォーマンスの考慮事項を説明します。
第8章では、VLDBのバックアップおよびリカバリに関連する問題を説明します。
記憶域は、大規模データベースの重要な要素です。第9章では、VLDBの記憶域に関するベスト・プラクティスを説明します。
情報ライフサイクル管理(ILM)は、使用できる期間中、データを管理するための一連のプロセスおよびポリシーです。ILM計画の重要な要素の1つは、アクセス頻度の低い古いデータはよりコストがかからずパフォーマンスの低いストレージ層に保存し、日常業務で使用されるより新しいデータは最も高速で、可用性の高いストレージ層に保存するなど、データの存続期間中のいつにおいてもデータを保存するために最適で費用効率が高い中間点を決定することです。古いデータは更新される頻度も低いため、そのような場合には、圧縮して読取り専用としてデータを保存することをお薦めします。
Oracle Databaseは、ILMソリューションの実装に理想的な環境を提供します。複数のストレージ層がサポートされており、すべてのデータがOracle Database内に存在するため、複数のストレージ層の使用方法はアプリケーションに対して完全に透過的で、データも安全に保たれます。パーティション化により、表内のデータを別々のパーティションに保存することを可能にする基礎となるテクノロジが提供されます。
エンタープライズ・レベルのシステムでは複数のストレージ層や複雑なILMポリシーが採用されている場合が多いですが、大部分の企業およびデータベースで、ある程度の情報ライフサイクル管理が必要です。最も基本的なILM操作である古いデータのアーカイブや、それらのデータのデータベースからの削除またはパージは、パーティション化を使用している場合には大幅に高速になります。
パーティション化の効果があるのは、大規模データベースだけではありません。すべてのデータベース(小規模なデータベースでも)、パーティション化の効果はあります。世界の最大規模のデータベースにはパーティション化が必要ですが、より小規模なデータベースにも明らかに効果があります。MBサイズのデータベースでも、パーティション化により、最大規模の数TBのシステムと同じようなパフォーマンスおよび管理性の向上を確認できます。
関連項目:
|