Oracle Cloud、Microsoft AzureおよびAmazon Web Servicesに分散された、線形にスケーラブルなシャードされたOracleデータベースのデプロイ
Oracle Shardingを使用すると、ハイパースケールでグローバルに分散されたコンバージド・データベースを使用できます。これは、線形スケーラビリティ、弾力性、障害分離、およびデータ主権のための地理的なデータ分散を必要とするアプリケーションをサポートします。これを行うには、独立したOracleデータベース(シャード)間でデータ・セットのチャンクを分散します。専用のハードウェアやソフトウェアを必要とせずに、シャードをクラウドまたはオンプレミスにデプロイできます。シャードは、このシェアード・ナッシング・アーキテクチャで実行時に相互に通信しないため、他のシャードが異なるクラウドまたはオンプレミスにある間に、あるクラウドにシャードをデプロイできます。
アーキテクチャ
次のアーキテクチャは、フォルト・トレラントなシャードOracle Database 19 cトポロジを示しています。プライマリ・シャードは、Oracle Cloud、Microsoft AzureおよびAmazon Web Servicesのリージョン全体に分散されます。プライマリ・シャードごとに、スタンバイ・シャードが同じリージョン内にプロビジョニングされます。
アーキテクチャには、シャード・データベースの最大可用性を確保するために、各クラウド・プロバイダのすべてのレイヤー(シャード・ディレクタ、カタログおよびシャード)に冗長なリソースがあります。
次の図は、この参照アーキテクチャを示しています。

図sharded-db-oci-azure-aws.pngの説明
アーキテクチャには、次のコンポーネントがあります。
- インターネット・ゲートウェイ
インターネット・ゲートウェイでは、パブリック・サブネットとパブリック・インターネット間のトラフィックが許可されます。各クラウド・プロバイダはパブリック・インターネットに接続されます。
- シャード・ディレクタ
シャード・ディレクタ(グローバル・サービス・マネージャとも呼ばれる)は、シャーディング・キーに基づいて適切なデータベース・シャードへの高パフォーマンスの接続ルーティングを可能にするネットワーク・リスナーです。
必要なシャード・ディレクタの数を指定できます。シャード・ディレクタは、各クラウド・プロバイダの個々のコンピュート・インスタンスにデプロイされます。シャード・ディレクタに使用するコンピュート・インスタンスのシェイプを選択できます。
- プライマリ・シャード・カタログおよびスタンバイ・シャード・カタログ
シャード・カタログは、自動的なシャードのデプロイメント、シャード・データベースの集中管理、およびマルチシャード問合せをサポートする特殊な目的のOracle Databaseインスタンスです。
このアーキテクチャには、カタログ・データベースのプライマリ・スタンバイ・ペアが含まれており、それぞれが単一ノードのデータベース・システム内にあります。カタログ・データベースのデータベース・シェイプおよび使用可能なストレージ容量を選択できます。カタログ・データベースのプライマリ・スタンバイ・ペアは、各クラウド・プロバイダにデプロイされます。
- データベース・シャード
各データベース・シャードは、単一ノードのデータベース・システムです。プライマリ・シャードは、Oracle Cloud、Microsoft AzureおよびAmazon Web Servicesに分散されます。各プライマリ・シャードには、関連付けられたスタンバイ・シャードがあります。
お薦め
- シャード数とサイズスタックのデプロイ時に、使用するデータベース・シェイプとシャードの数を指定できます。
- ワークロード要件に基づいて適切なシェイプを選択します。指定したシェイプは、すべてのシャードに使用されます。
デプロイ後、ワークロードの変更に適応するように個々のシャードのシェイプを変更できます。シェイプを変更するシャードが停止され、新しいシェイプを使用して再起動されます。
- 一般に、少数の小さいシャードは、少数の大きいシャードよりも全体的なフォルト・トレランスを向上させます。トポロジをスケール・アウトしたり、フォルト・トレランスを改善するために、既存のシャードの可用性に影響を与えることなく、いつでもシャードを追加できます。必要に応じて、シャード・データベースをスケール・インできます。最後に作成されたシャードは、データを他のシャードに移動した後に最初に削除されます。
- ワークロード要件に基づいて適切なシェイプを選択します。指定したシェイプは、すべてのシャードに使用されます。
- シャードの可用性
シャードの高可用性を確保するには、スタンバイ・シャードをプロビジョニングし、プライマリとスタンバイの同期およびフェイルオーバーにOracle Data Guardを使用します。
- シャード・カタログの可用性
シャード・カタログの高可用性のために、スタンバイ・カタログをプロビジョニングし、同期およびフェイルオーバーにOracle Data Guardを使用します。シャード・カタログの可用性はシャード・データベースの可用性に影響しません。シャード・カタログの停止は、スタンバイ・カタログへのフェイルオーバー中にメンテナンス操作またはマルチシャード問合せを実行する機能にのみ影響します。OLTPトランザクションは引き続きシャードにルーティングされます。
- シャード・ディレクタの可用性
シャード・ディレクタ・レイヤーの高可用性のために、複数のシャード・ディレクタをデプロイします。領域に最大5つのシャード・ディレクタをデプロイできます。Oracleでは、少なくとも2つのシャード・ディレクタをデプロイすることをお薦めします。Oracle Cloudでは、Oracleはシャード・ディレクタを個別の可用性ドメインまたはフォルト・ドメインに分離することをお薦めします。
- 記憶域
ワークロードに適したストレージ容量を選択します。たとえば、ローカル・ストレージまたは指定したサイズのブロック・ボリュームのいずれかが各データベース・シャードにアタッチされます。
クラウド・ストレージ・プロバイダの機能に基づいて、データベースの可用性に影響を与えることなく、いつでもストレージをスケール・アップできます。Oracle Cloudにあるシャードの場合、Oracle Cloudの記憶域の詳細は、Oracle Cloud Infrastructure Databaseのドキュメントを参照してください。
注意事項
- アプリケーションの設計
適切に定義されたデータ分散戦略を持ち、主にシャーディング・キー(顧客ID、アカウント番号など)を使用してデータにアクセスするアプリケーションは、シャード・データベースに適しています。
- スケーラビリティー
シャード・データベースをデプロイした後、スタックを編集して変更を適用することで、シャードの数を増減できます。スタックのデプロイ時に指定したレプリケーション係数に応じて、スタンバイ・シャードもスケーリングされます。
シャード・ディレクタの数もスケーリングできます。
- セキュリティ
シャード・データベースのデプロイ時に、SSH公開キーを指定して、データベース・サーバーへのセキュアなSSH接続を有効にします。
特定のユースケースおよびセキュリティ要件に基づいて、必要に応じてファイアウォールおよびプロキシを使用します。
- ネットワーク隔離
ネットワーク分離を保証するためのベスト・プラクティスは、シャード・データベースをプライベート・サブネットにデプロイすることです。ルーティングおよびファイアウォール・ソリューションは、アプリケーションの設計と要件に基づいて決定する必要があります。
詳細の検討
次の追加のリファレンス・アーキテクチャとソリューション・プレイブックを確認してください。
- Oracle Cloud Infrastructureに、直線的にスケーラブルでフォルト・トレラントなシャードOracleデータベースをデプロイします
- Oracle CloudとMicrosoft Azureのインターコネクトについて学ぶ
Oracle Shardingの使用(Oracle Database 19 cのドキュメント)