Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Oracle Database 23ai 新機能 #3 Oracle Globally Dis...

Oracle Database 23ai 新機能 #3 Oracle Globally Distributed Database(GDD)

今回のTech Nightでは、数ある23ai新機能の中から、ハイパースケール、耐障害性、データ主権のために設計された分散データベース機能である Oracle Globally Distributed Database(GDD)を取り上げて解説します。

oracle4engineer

August 29, 2024
Tweet

Video

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. Oracle Database Technology Night #81 Oracle Globally Distributed Database Oracle

    Database 23ai新機能 南野 英梨子 日本オラクル株式会社 2024年08月29日
  2. Copyright © 2024, Oracle and/or its affiliates | 2 1.

    Oracle Globally Distributed Database: 概要とアーキテクチャ 2. Oracle Globally Distributed Database: 23ai新機能 • レプリケーション方式 • シャード・データ分散方法 • その他 3. Oracle Globally Distributed Database: アプリケーションの要件と適合性 4. Appendix Agenda
  3. ハイパースケール、耐障害性、データ主権のために設計された分散データベース Oracle Globally Distributed Database Copyright © 2024, Oracle and/or

    its affiliates | 4 • データを独立したデータベース(シャード)に水平パーティショニング して処理を分散させ、スケーラビリティを得る機能 • 各シャードはデータの一部分を保持 • シングルまたはRAC構成のプラガブル・データベース(PDB) • 高可用性のためのレプリケーションも可 • シェアード・ナッシング・アーキテクチャのデータベース • 各シャード(データベース)は、ハードウェア(CPU、メモリー、ディスク)お よびソフトウェアを共有しない • 大規模なトランザクション実行 • アプリケーションから各シャードへ直接接続して処理分散 • コーディネーターを介してマルチ・シャード・クエリーも実行可 • Oracle Databaseの可用性、セキュリティ、管理性などエンタープライ ズ向けの機能をサポート 表 1 1 1 シャード 1 2 3 単一論理データベース アプリケーション
  4. Oracle Globally Distributed Databaseが選ばれる代表的な例 ハイパースケール オンラインでシャードを追加し、 データベースの容量とスループットを 向上 障害の分離 1つのシャードに障害が発生しても、

    他のシャードには影響なし データ主権 規制要件に準拠するための ユーザー定義のデータ配置 + ! Copyright © 2024, Oracle and/or its affiliates | 5
  5. シャード・データベース 構成要素 クライアント側コネクション・プール • シャード・データベースのトポロジーマップをキャッシュ • シャーディング・キーに基づき、リクエストを直接シャードにルーティング シャード・ディレクタ • 構成・管理処理の実行や、シャードへの接続要求をルーティングするグローバ

    ル・サービスとして機能 • ランタイムのシャード・データベースのトポロジ更新、ロードバランシングアドバイザ リ、および FAN イベントをクライアントに発行 シャード・カタログ • 集中管理のための構成情報を保持するリポジトリ・データベース • マルチシャードクエリのコーディネータとしても機能 シャード • パーティショニングされたデータを保持するデータベース(PDB) シャード・データベース • ハードウェアまたはソフトウェアを共有しない物理Oracleデータベース(シャード)の プールで水平にパーティション化された単一の論理Oracle Database Oracle Globally Distributed Databaseアーキテクチャ Copyright © 2024, Oracle and/or its affiliates | シャード・ディレクタ シャード・カタログ シャード シャード シャード コネクション・ プール Customer 123 シャーディング・キー アプリケーション層 ルーティング層 データ層 6
  6. Oracle Globally Distributed Databaseのルーティング層の実態はGlobal Data Service • Active Data GuardやGoldenGateによるレプリカのデータ

    ベース構成に対するワークロード管理 • ワークロード・ルーティング • サービスの接続時ロード・バランス • データベース間のサービスのフェイル・オーバー • システム全体の性能と可用性の向上 • システム全体の拡張性向上 • 計画/計画停止時のシステム停止時間の削減 • 単一インターフェイスで複数レプリカのリソースを管理 • GDSCTLユーティリティ • Active Data Guardのオプションが必要 参考) Oracle Global Data Service Copyright © 2024, Oracle and/or its affiliates | 7 SVC_RW SVC_RO プライマリ SVC_RO SVC_RO SVC_RO SVC_RW (読み書き処理用サービス) SVC_RO (参照のみ用サービス) Global Data Service リージョン1 リージョン2 スタンバイ スタンバイ Global Service Manager カタログ・データベース
  7. シャードは「データベース」であって「サーバー・ノード」ではない シャード • パーティショニングされたデータを保持するプラガブル・データ ベース(PDB) • 19c以降、複数シャード(PDB)を1つのCDBにホスト可能 • Oracle Databaseの文脈では「データベース」とはストレージ上

    のデータの集合のこと • RACは1つの「データベース」を複数のサーバー・ノードで共有 する構成でありGlobally Distributed Databaseとも組み合わ せ可能 • 1つのシャードがExadata Full Rackである構成も可能 • 1つのシャード(≒データベース)の可用性を高める構成は Maximum Availability Architecture(MAA)の話そのもの • Real Application Clusters(RAC) • Automatic Storage Management(ASM) • Active Data Guard • ... Oracle Globally Distributed Databaseアーキテクチャ Copyright © 2024, Oracle and/or its affiliates | シャード1 シャード2 シャードn 8 RAC + ASM PDB Exadata
  8. 1つのシャード内で完結させるのが基本 単一シャード・クエリ • シャーディング・キーでシャードを特定できる • 1つのシャードに接続して実行される • オンライン・トランザクション処理は基本的にこれを想定 マルチ・シャード・クエリ •

    複数シャードにまたがるSQL • シャード・カタログに接続して実行される • 集計・分析処理 • シャード間結合を必要とするクロス・シャード・クエリが 一番コスト高 Oracle Globally Distributed Databaseでのクエリ実行 Copyright © 2024, Oracle and/or its affiliates | 9 ・・・ ・・・ シャード・カタログ クライアント クライアント
  9. 可用性のためのレプリケーション方法 〜21c ・ Data Guard(Active Data Guard) ・ GoldenGate 23ai〜

    ・Data Guard(Active Data Guard) ・Raftレプリケーション Oracle Globally Distributed Database Copyright © 2024, Oracle and/or its affiliates | 11 GoldenGate ※GoldenGateによる可用性のためのレプリケーションは21cから非推奨、23aiから非サポート シャード単位での Active-Standby レプリケーション チャンク*単位での Active-Active レプリケーション シャード単位での Active-Standby レプリケーション レプリケーション・ユニット (複数のチャンク)での Active-Active レプリケーション * チャンク・・・シャード・データベースにおけるデータ移動の単位であり、 各チャンクは、シャード化されたテーブルの関連するパーティションを含む表領域
  10. Active-Active グローバル・スケール・データベースでのレプリケーション方式 トランザクション実行と連動した、組み込みの論理レプリケーション • 一般的なRaft(分散合意アルゴリズム)に基づいて構築 高い可用性 • Raftコンセンサス・プロトコルにより、障害、メッセージの損失または遅延が発生した 場合にも、レプリカ間で一貫性を保証 •

    自動フェイルオーバーをデータ損失なしで1秒未満で実装(全シャードが同一データ センター内にある場合) 管理の簡素化 • 障害時や再構成時など、シャード数が変化した場合の自動再構成 • Data GuardやGoldenGateの構築は不要 自動データ配置とハードウェア使用率の最適化 • システム管理シャーディングで利用可能(データを自動配置するシャーディング方法) • シャード間で均一な構成。Active-Active構成でプライマリ-セカンダリの構成なし Raftレプリケーション Copyright © 2024, Oracle and/or its affiliates | 12 Network Latency Network Latency * * 参考) ・Oracle Globally Distributed Database ガイド > Raftレプリケーションの使用 ・Oracle Database 23ai:Oracle Globally Distributed DatabaseのRaftレプリケーションサポート
  11. 構成 Raftレプリケーション Copyright © 2024, Oracle and/or its affiliates |

    13 参考) Oracle Globally Distributed Database ガイド > Raftレプリケーションの使用 1 - L 2 - F1 3 – F1 4 - L 2- L 3 - L シャード1 シャード2 シャード3 L:リーダー F:フォロワー Raft グループ チャンク チャンク チャンク … レプリケーション・ユニット(RU) 1 – F1 1 – F2 3 - F2 2 – F2 4 – F1 4 – F2 5 – F2 5 - F1 5- L 6 - L 6 – F1 6 - F2 シャード4 シャード5 シャード6 • シャード間で、複数のレプリケーション・ユニット(RU)をレプリケーション • RUは一連のチャンク(チャンク・セット)。RUのレプリカが3つ以上の シャードに均等に分散される • 各シャードは、Raftグループ内の一部のRUのリーダー(プライマリ)であり、 他シャードがリーダーのRUのフォロワ(レプリカ)になる • DML実行時、最初にリーダーで実行され、フォロワにレプリケーション • 変更データはRaftログに記録され、シャード内やシャード間で独立したパラレル 操作が可能 • RaftログはREDOログとは無関係に保持され、リーダーで生成された 順序を保証してフォロワで受信。フォロワの半分でRaftログに書き込まれたら、 リーダーでコミット • 適用は非同期 • 設定: シャード・カタログを作成する際に指定 GDSCTL CONFIG CREATE SHARDCATALOG … -repl native
  12. 障害発生時 • 自動フェイルオーバー • 3秒未満。全シャードが同一データセンター内にある場合は1秒未満が可能 • リーダー障害が発生した場合 • 定足数のシャードが健全な限り、 フォロワで新しいリーダー選定プロセスが開始

    • 閾値(デフォルト最大150ms)までの間、フォロワがリーダーからデータやハートビー トを受信しない場合、新しいリーダー選出プロセスが開始 • 複数シャードで同時に選出プロセスが開始することを防ぐために、選出タイムアウ トはランダム • フォロワの1つが新リーダーになると、クライアント・ドライバにリーダーシップ変更の 事前通知され、クライアント・ドライバから新しいリーダー・シャードへのリクエスト・ ルーティングが行われる • 障害が起きたシャードがオンラインに戻る (フェイル・バック) と、フォロワとしてクラスタ に参加し同期される Raftレプリケーション Copyright © 2024, Oracle and/or its affiliates | 14 参考) Oracle Globally Distributed Database ガイド > Raftレプリケーションの使用 1 - L 2 - F1 2- L 3 - L シャード1 シャード2 シャード3 L:リーダー F:フォロワー 1 – F2 5 – F2 6 – F1 6 - F2 .... 1 - L 新リーダー
  13. Raftレプリケーションを試してみる Oracle LiveLabs: Use Raft Replication with Distributed Database for

    Resilient Never-Down Apps Oracle Globally Distributed Database Copyright © 2024, Oracle and/or its affiliates | 15
  14. シャード表と重複表 Oracle Globally Distributed Databaseアーキテクチャ Copyright © 2024, Oracle and/or

    its affiliates | 17 顧客 名前 123 メアリー 456 ジョン 999 ピーター 顧客 オーダー 123 4001 456 4002 999 4003 456 4004 456 4005 顧客 オーダー 明細 123 4001 40011 999 4003 40012 123 4001 40013 456 4004 40014 999 4003 40015 999 4003 40016 シャード表ファミリ 顧客 オーダー 明細項目 シャード表 1 2 3 SKU 製品 100 コイル 101 ピストン 102 ベルト 重複表 製品
  15. 各シャードが持つデータの排他と重複を使い分ける設計が必要 Sharded Table (シャード表) • パーティショニングされた表 • 全シャードが排他的にデータを持つ • 定義はパーティション表とほぼ同じ

    • コンシステント・ハッシュ • レンジ、リスト • これらの複合(コンポジット・パーティショニング) • ディレクトリベース Duplicated Table (重複表) • パーティショニングできない表 • 全シャードが同じデータを持つ • シャード・カタログが持つデータがレプリケートされる(マ テリアライズド・ビュー・レプリケーション) • 高頻度の更新は想定していない 各シャードへのデータのパーティショニング Copyright © 2024, Oracle and/or its affiliates | 18 排他 重複 ・・・ ・・・ シャード・カタログ
  16. 各シャードが持つデータの排他と重複を使い分ける設計が必要 Sharded Table (シャード表) • パーティショニングされた表 • 全シャードが排他的にデータを持つ • 定義はパーティション表とほぼ同じ

    • コンシステント・ハッシュ • レンジ、リスト • これらの複合(コンポジット・パーティショニング) • ディレクトリベース Duplicated Table (重複表) • パーティショニングできない表 • 全シャードが同じデータを持つ • シャード・カタログが持つデータがレプリケートされる(マ テリアライズド・ビュー・レプリケーション) • 高頻度の更新は想定していない 各シャードへのデータのパーティショニング Copyright © 2024, Oracle and/or its affiliates | 19 排他 重複 ・・・ ・・・ シャード・カタログ
  17. Copyright © 2024, Oracle and/or its affiliates | 20 システム管理シャーディング

    各シャードへのデータ配置をシステムが自動的に分散 • コンシステント・ハッシュ:各チャンクに割り当てられたハッシュ値の範囲 ユーザー定義シャーディング データ配置を特定のシャードに明示的に指定 • レンジ:各チャンクに割り当てられたシャーディング・キー値の範囲 • リスト:各チャンクはシャーディング・キー値のリストに関連付けられます ディレクトリベース・シャーディング ディレクトリ表のキー/パーティション・マッピング情報に基づいて、データを自動的に配置 コンポジット・シャーディング ユーザー定義とシステム管理を組み合わせた、2つのレベルでのシャーディング方式 • まずはリストもしくはレンジ(ユーザー定義)でシャードされ、次にコンシステント・ハッシュ(システム管理)でさらにシャード シャード表のシャーディング方法 参考) Oracle Globally Distributed Database ガイド >データ配分方法
  18. ディレクトリベース・シャーディング ディレクトリ表のキーもしくはパーティション・マッピング情報に基づいて、データを自動的に配置 • 実行時に動的にキー値とシャードを明示的に関連付けて、キー値とシャードのマッピングをきめ細かく制御 • キー値のセットが十分に多くはない場合、シャーディングをより効率的に使用できる • システム管理のシャーディングを使用したデータの均等な分散を実現するには キー値が十分な数でない場合 例)

    顧客アカウントデータ管理のB2Bアプリケーション • 逆にキー値の数が比較的多い場合(数万〜数十万)には、ディレクトリベース・シャーディング を使用するとデータの分布が不均一になる可能性がある • ユーザー定義シャーディングで特定のキー値を同じ場所 またはグループ化するのに、キー値の数が少ない場合 例) Social Networkアプリケーションでメッセージ が頻繁に行われる顧客をグループ化 • 逆にキー値数が多い場合は、ユーザー定義 シャーディングを検討 シャード表のシャーディング方法 Copyright © 2024, Oracle and/or its affiliates | 21 ID Name City 100 メルセデス ベルモント 101 ホンダ サンタクララ 102 レクサス レッドウッドシティ 103 テスラ パロアルト 104 フェラーリ レッドウッドシティ 105 トヨタ サンノゼ 106 フォルクスワーゲン サニーバレー 107 ポルシェ フリーモント シャード表 シャード1 Key Partition Shard 100 P1 1 101 P2 1 102 P1 1 103 P3 2 104 P2 1 105 P4 2 106 P3 2 107 P4 2 P1 P2 P3 P4 シャード2 シャード・カタログ ディレクトリ表 参考) Oracle Globally Distributed Database ガイド > ディレクトリベースのシャーディング
  19. コンポジット・シャーディング ユーザー定義とシステム管理を組み合わせたシャーディング • 最初に指定したリストまたはレンジで複数のシャード領域*(シャード・スペース)にパーティション化され、次にシステム管 理(コンシステント・ハッシュ)により各シャード領域内のシャード間に自動的にパーティション化される • *シャード領域: 1つのリスト or レンジで分割されたパーティションに含まれるシャードのセット

    • ユースケース • 例: 高速なサーバーでホストされるシャードのシャード領域1を ゴールド顧客に、低速のサーバーでホストされるシャードの シャード領域2をシルバー顧客に割り当てる シャード表のシャーディング方法 Copyright © 2024, Oracle and/or its affiliates | 22 参考) Oracle Globally Distributed Database ガイド > コンポジット・シャーディング シャード4 シャード5 シャード6 シャード7 シャード領域1 シャード1 シャード2 シャード3 ゴールド 顧客 シルバー 顧客 シャード領域2
  20. シャード領域間でのチャンク移動 〜21cまで シャード領域内での移動のみ可能 • 異なるシャード領域へ移動する場合には、一時表・DBリンク等を用いて手動で行う必要があり、時間がかかる 23ai〜 シャード領域間での自動チャンク移動に対応。既存のシャード領域間や、新規追加時のロードバランシングが可能 • シャード領域間のデータの一括移動サポート。データの分割・移動の自動化 •

    ロードバランシング中もデータはオンラインのため、クライアントからのアクセス可 • トランスポータブル表領域を使用したバルク・データ移動 • 新しいビジネス・ニーズに合わせてシャードされたデータをアレンジ • ユースケース:特定の顧客に新しいレベルのサービスやリソースの提供、 顧客のサービス・クラスを変更など コンポジット・シャーディング機能拡張 Copyright © 2024, Oracle and/or its affiliates | 23 シャード領域2 シャード4 シャード5 シャード6 シャード7 シャード領域1 シャード1 シャード2 シャード3 ゴールド 顧客 シルバー 顧客 顧客A ステータス・アップ!! 参考) Oracle Globally Distributed Database ガイド > コンポジット・シャーディング
  21. 〜21c パーティション・セット*操作において、パーティション・セットの追加/分割操作によって影響を受ける子表や参照パーティショ ン表の表領域セット指定は不可 • *パーティション・セット: ユーザー定義のデータのサブセットを異なる表領域に格納するために、パーティションをグルー プ化したもの 23ai〜 ALTER TABLEでパーティション・セットのメンテナンスが簡単に

    • MOVE PARTITIONSET • 特定の表のすべてのサブ・パーティションを、同じシャード領域内の別の 表領域セットに移動 • LOBおよびサブパーティションに個別の表領域セットを指定することも可 • MODIFY PARTITIONSET • パーティション・セットの値リストに値を追加 パーティション・セットのメンテナンス コンポジット・シャーディング機能拡張 Copyright © 2024, Oracle and/or its affiliates | 24 参考) Oracle SQL言語リファレンス >ALTER TABLE シャード1 シャード2 シャード3 シャード領域 表領域セット パーティション パーティション パーティション パーティション パーティション パーティション パーティション・セット
  22. シャーディング・キー更新時の自動的なデータ再配置 〜21c シャーディング・キーを更新したい場合、古いキー値に紐づくデータを削除し、新しいキー値に紐づくようにデータ再投入 → メンテナンス作業が煩雑 • そもそも、シャーディング・キーはあまり変更されない特性のものを利用 • 例 :

    顧客ID、アカウント番号、国IDなど • 更新するケースの例 : 従業員の勤務地変更、役職変更など 23ai〜 シャーディング・キーの更新時に、マッピング情報に基づき自動的にデータ再配置されるように • データ再配置が必要と判断された場合、同一シャード内の異なるパーティションや異なるシャードへ再配置 → 構成変更や管理の容易性向上。シャーディング・キーを柔軟に更新、シャード間の透過的なデータ移動が可能 • シャード表に対して有効化設定 シャード表のメンテナンス強化 Copyright © 2024, Oracle and/or its affiliates | 25 参考) Oracle Globally Distributed Database ガイド > シャーディング・キー SQL> CREATE|ALTER TABLE … ENABLE ROW MOVEMENT
  23. サブ・パーティションでのグローバル・パーティション索引のサポート 〜21c シャード表のローカル索引は作成可能。グローバル索引は、オンライン・チャンク移動のパフォーマンスを損なう可能性があ るため不可 23ai〜 サブパーティション化されたシャード表に対し、シャーディング・キーでグローバル・パーティション索引を作成可能に シャード表のメンテナンス強化 Copyright © 2024,

    Oracle and/or its affiliates | 26 参考) Oracle Globally Distributed Database ガイド >サブパーティション化とシャーディングの使用 Oracle Globally Distributed Database ガイド >シャード表の索引の作成 SQL> CREATE [UNIQUE] INDEX index_name ON table_name (col1, col2 ...) [TABLESPACE SET tsset] PARTITIONED AS TABLE;
  24. 各シャードが持つデータの排他と重複を使い分ける設計が必要 Sharded Table (シャード表) • パーティショニングされた表 • 全シャードが排他的にデータを持つ • 定義はパーティション表とほぼ同じ

    • コンシステント・ハッシュ • レンジ、リスト • これらの複合(コンポジット・パーティショニング) • ディレクトリベース Duplicated Table (重複表) • パーティショニングできない表 • 全シャードが同じデータを持つ • シャード・カタログが持つデータがレプリケートされる(マ テリアライズド・ビュー・レプリケーション) • 高頻度の更新は想定していない 各シャードへのデータのパーティショニング(再掲) Copyright © 2024, Oracle and/or its affiliates | 27 排他 重複 ・・・ ・・・ シャード・カタログ
  25. 全てのシャードでレプリケーションされる表 • 頻繁に更新されない、シャード表とともにアクセスされることが多い比較的小さい表での利用を想定 • シャード・カタログがもつプライマリ表からマテリアライズド・ビューのリフレッシュで伝播 • 同期方法 • 非同期重複表(デフォルト) •

    各シャードで重複表を直接更新。その後、他の全シャードに非同期で伝搬 • 重複表の更新頻度の細かな設定が可能 (23ai〜) • 更新頻度を重複表ごとに指定可能(デフォルト60秒) • 更新頻度は、秒、分、時間で指定することも、オンデマンドのみの更新(自動更新なし)するように設定することも可能 • 同期重複表 (23ai〜) • シャード・カタログ内の重複表でのDMLコミット時に、各シャードに同期することが可能 • 全てのシャードが稼働している必要あり • DMLコミット時に、リフレッシュのマルチシャードDMLがパラレルで同期される 重複表 Copyright © 2024, Oracle and/or its affiliates | 28 SQL> CREATE DUPLICATED TABLE Products (StockNo NUMBER PRIMARY KEY , Description VARCHAR2(20) , Price NUMBER(6,2)) SYNCHRONOUS; SQL> CREATE DUPLICATED TABLE … REFRESH INTERVAL [SECOND|MINUTE|HOUR]|REFRESH ON DEMAND; 参考) Oracle Globally Distributed Database ガイド >重複表の作成 重複 ・・・ シャード・カタログ
  26. 1つのシャードは1つのデータベース 19c • 個別のシャード(データベース)を個別にバックアップ 21c〜 • GDSCTLユーティリティを使用してバックアップ・ポリシーを 定義し、1つ以上のシャード、またはOracle Globally Distributed

    Database全体を管理 • ステータス監視 / 一覧表示 / バックアップを検証 / バッ クアップをリストア シャーディング環境のバックアップ/リストア Copyright © 2024, Oracle and/or its affiliates | 30 シャード シャード シャード シャード・データベース シャード シャード シャード シャード・データベース ・・・ シャード・カタログ ・・・ シャード・ディレクタ シャード・カタログ $GDSCTL …
  27. エラー時の分析強化、セキュリティ強化、データ・レジデンシ要件への対応強化 1. バックアップ・ジョブのエラーハンドリングの強化 • エラーの記録を確認できるよう、エラー時にはRMANの出 力ファイルが保持される • バックグラウンドで実行中、 GDSCTLで確認も可能 2.

    シャード・カタログのGDSCTLでのリストアが可能に • これまでは手動でRMANリストアが必要 3. GDSCTLからRMANコマンドの実行が可能に 4. シャードごとに異なるリカバリ・カタログを使用可能に 5. バックアップ・セットの暗号化の設定が可能に • 暗号化の有効化・無効化、暗号化アルゴリズムの指定 6. バックアップの宛先として下記をサポート • Oracle Object Storage • Zero Data Loss Recovery Appliance • Amazon S3 シャードのバックアップ・リカバリの機能強化6項目 Copyright © 2024, Oracle and/or its affiliates | 31 GDSCTL CONFIG BACKUP –shard <DB> –rccatalog <リカバリ・カタログ> GDSCTL RESTORE BACKUP –shard CATLOG GDSCTL RMAN -shard <DB> <RMANコマンド> GDSCTL CONFIG BACKUP –encryption 参考) Oracle Globally Distributed Database ガイド > バックアップおよびリカバリ
  28. Copyright © 2024, Oracle and/or its affiliates | 32 構成前に事前にチェックすることで一般的な問題を予防し、構築完了までにかかる時間を短縮

    次のGDSCTLコマンドで –validate_network オプションをつけることで検証可能 • add {invitednode | invitedsubnet} • add shard • deploy • start gsm • validate (-show_errorsも含む) 構成前の事前デプロイメント診断機能 参考) Oracle Globally Distributed Database ガイド > 配置前ネットワークの検証
  29. Copyright © 2024, Oracle and/or its affiliates | 33 •

    ソース・データベース・シャード・オブジェクトに基づいて、シャーディング・オブジェクトをターゲット・データベースに移行可能 • サポートするシャーディングDDL: create table、sequence、tablespaceおよびtablespace set • impdp … INCLUDE_SHARDING_CLAUSES:[Y|N(デフォルト)] • dbms_metadata.get_ddl() Oracle Data Pumpによるシャーディング・メタデータのサポートの追加 参考) Oracle Database ユーティリティ > Oracle Data Pumpインポート Oracle Database PL/SQLパッケージおよびタイプ・リファレンス > DBMS_METADATA
  30. 接続関連 • 分割パーティション・セットのJDBCサポート • Java接続プール(UCP)は、分割されたパーティショ ン・セット間で移動されるチャンク内のデータに関す るONSイベントを受信し、シャーディング・トポロジを 適切に更新可能に • シャード・データベースを使用したXAトランザクションの

    UCPサポート • WebLogicサーバー・トランザクション・マネージャに よって管理されるeXtendedアーキテクチャ(XA)トラ ンザクションがシャード・データベースに接続が可能 に 処理関連 • PL/SQL関数クロスシャード問合せのサポート • SHARD_ENABLE句 • SQL*Loaderを使用した自動パラレル・ダイレクト・パス・ ロードのサポート • パラレル・クロスシャードDMLのサポート • クエリ・コーディネータが、複数のシャードでクロス シャード更新および挿入をパラレルに実行 クライアントからの接続・処理関連の新機能 Copyright © 2024, Oracle and/or its affiliates | 34
  31. Copyright © 2024, Oracle and/or its affiliates | 非推奨 •

    Oracle Data Provider for .NET管理対象外ドライバの非推奨 • Oracle Data Provider for .NET (ODP.NET)管理対象外ドライバは、Oracle Database 23aiでは非推奨であり、将来のリリースでサ ポートされなくなる可能性があります。既存の管理対象外ODP.NETアプリケーションをODP.NET管理対象ドライバに移行すること をお薦めします。 非サポート • サービス属性値SESSION_STATE_CONSISTENCY = STATICのサポート終了 • SESSION_STATE_CONSISTENCY = STATICが指定されたセッション属性値FAILOVER_TYPE = TRANSACTIONは、サポートされてい るサービス属性の組合せではなくなりました。 • Oracle Globally Distributed Database高可用性のためのOracle GoldenGateレプリケーションのサポート終了 • Oracle Globally Distributed Databaseでのシャード・レベルの高可用性のためのOracle GoldenGateレプリケーションの使用は、 Oracle Database 23aiではサポートされません。 • Oracle Database Extensions for .NETのサポート終了 • Oracle Database Extensions for .NETはサポートされなくなりました。.NETコードを中間層に配置するか、外部プロシージャ機能を 使用するか、PL/SQLまたはJavaを使用してコードを書きなおすことをお薦めします。 Globally Distributed Database 23aiでの非推奨・非サポート機能 参考) Oracle Globally Distributed Database ガイド >Oracle Database 23aiでの変更点 35
  32. お客様はOracle Globally Distributed Databaseを次のようなユースケースで利用しています Oracle Globally Distributed Databaseのユースケース Copyright ©

    2024, Oracle and/or its affiliates 37 ユース・ケース Oracle Globally Distributed Databaseを選択する前に 顧客によって評価される製品 インターネット・スケール・リアルタイムOLTP Cassandra、MongoDB、MariaDB、Couchbase、 Aerospike、ScyllaDB グローバル・データベース/データ主権 Google Spanner、Azure Cosmos DB、 AWS Aurora、CockroachDB ログ/テキスト・ストア Apache Lucene, Elastic Search, Solr メトリック/時系列ストア、IoT、Infrastructure Monitoring、APM AWS Redshift/EMR、Druid、Cassandra、Graphite、InfluxDB 機械学習 Apache Spark、HDFS、NoSQLおよびSQL Sharded DB ビッグ・データ分析 Apache Spark、SingleStore 顧客によって評価された製品の多くがシャーディング・システムであり、厳密なデータ一貫性のサポート、トランザクション、ACIDプロパティ、複雑な結合、SQLの完全サポート、 高度なセキュリティ、クロスリージョン・レプリケーション、パフォーマンス・オプティマイザ、バックアップとリカバリ、トリガ、ストアド・プロシージャ、定期的なセキュリティ・パッチ、 規模に応じた管理性など、エンタープライズ・グレードの機能が不足していたため、お客様はOracle Globally Distributed Database(Sharding)を選びました
  33. 十分に定義されたデータ・モデルとデータ分散の設計が必要 Oracle Globally Distributed Databaseの導入時のベスト・プラクティス Copyright © 2024, Oracle and/or

    its affiliates | 38 7 シャード化されていないデータベースから シャード化されたデータベースへの ダウンタイムなしのデータ移行を 事前に計画し、移行をテスト 最大限の処理を シャードにプッシュできるような、 優れたシャーディング・キーを選択 1 3 2 可能な限り ダイレクト・ルーティングを 使用 5 インデックスと サブ・パーティショニングを 使用したクエリパフォーマンス の向上 6 4 データベースのセキュリティ機能を活用し、 データ主権を強化 頻繁に変更されず、 量も多くないデータには 複製表を使用 どのデータセットが規制に準拠する 必要があるかを確認し、そのデータのみを リモート・シャードに保存 データの常駐に関する要件に準拠
  34. アプリケーションの要件と適合性のガイド シャード・データベース・アーキテクチャ向けに明示的に設計されたOLTPアプリケーションを想定 • 定義されたデータ・モデルと、キーを介してデータにアクセスするデータ分散戦略 • 処理は1つのシャード内で完結させるのが基本(単一シャード・クエリ) • 高性能が求められるトランザクションは、単一シャード・クエリで処理 • マルチ・シャード・クエリでの操作やアクセスはサポートされているが性能は低下

    → 各シャードが持つデータの排他と重複を使い分ける設計が必要 • Real Application Clustersを利用している既存システムに関して • RACは、拡張性と可用性をアプリケーションに対して透過的に実装可能。GDDは、十分に定義されたデータ・モデ ルとデータ分散戦略を備えた上でデータ分散が可能 • 「既存アプリケーションで、ユーザーがOracle RACのスケーラビリティと可用性のサービス・レベルに満足していれば、Oracle Sharding(*)を使用する必要はありません。Oracle Shardingが好ましいソリューションになるのは...、Oracle RACでは現在または 将来のスケーラビリティおよび可用性要件に対処できないと判断したとき…、およびアプリケーションをシャード・ データベース向け に明示的に設計可能なときです。」 『よくある質問Oracle Database 12c Release 2 – Oracle Sharding』より • RACとGDDは排他的ではなく、シャードをRAC構成で利用可能 Oracle Globally Distributed Database Copyright © 2024, Oracle and/or its affiliates | よ く あ る 質 問 Oracle Database 12c Release 2 – Oracle Sharding よくある質問 Oracle Database 12c Release 2 – Oracle Sharding 39 (*)Oracle Sharding=Oracle Globally Distributed Database
  35. 既存データベースのスキーマとSQLを分析しシャーディング用スキーマの候補を複数提示する 10g以降のOracle Databaseに接続して使用するコマンド・ライン・ツール 既存データベースのスキーマとSQLを分析しシャーディング用スキーマの候補を複数提示する シャーディングがスケールする暗黙の前提は「1つの処理は1つのシャード内で完結する」 既存データベースに格納されている情報からパーティショニングしたスキーマの候補を複数提示する • スキーマ構造(主キー、外部キー) • SQL実行計画(表のジョイン)

    • 動的パフォーマンス・ビュー • AWRスナップショット 提示される候補は、パフォーマンスの観点でランク付け • 1つのシャード内で完結するクエリ(単一シャード・クエリ)、マルチ・シャード・クエリ、シャード間結合を必要とするマルチ・ シャード・クエリ(クロス・シャード・クエリ)という順で、全体的にコストが低いものから提示 シャーディング・アドバイザ Copyright © 2024, Oracle and/or its affiliates | 40
  36. ORACLE_HOME/bin/gwsadvコマンドで分析対象に接続 分析対象データベースに直接接続して分析 スキーマ情報を別のデータベースに移して分析 シャーディング・アドバイザ - Oracle Databaseに付属のスキーマ解析ツール Copyright © 2024,

    Oracle and/or its affiliates 41 gwsadv gwsadv 分析対象データベース 分析対象データベース スキーマ定義 (CREATE文の集合) $ expdp ... CONTENT=METADATA_ONLY AWRスナップショット (SQLとその実行計画) SQL> @$ORACLE_HOME/rdbms/admin/awrextr.sql • スキーマ定義 • SQLとその実行計画 データ本体は不要
  37. gwsadvコマンドを実行するとアドバイス結果を格納する表が作成される シャーディング・アドバイザ実行例 Copyright © 2024, Oracle and/or its affiliates 42

    SQL> select table_name from user_tables where table_name like 'SHARDINGADVISOR%'; TABLE_NAME ---------------------------------------------------------------------- SHARDINGADVISOR_CONFIGDETAILS SHARDINGADVISOR_CONFIGURATIONS SHARDINGADVISOR_ECPREDS SHARDINGADVISOR_IMPORTANT_TABS SHARDINGADVISOR_PREDS SHARDINGADVISOR_QUERYTYPES • SHARDED/DUPLICATED表の個数 • シングル/マルチ・シャード・クエリーの個数 • SHARDED表の構成 • DUPLICATED表の構成 • シングル・シャード・クエリー • マルチ・シャード・クエリー
  38. SHARDINGADVISOR_CONFIGDETAILS表 - 各候補の構成 シャーディング・アドバイザ実行例 Copyright © 2024, Oracle and/or its

    affiliates 43 SELECT rank, chosenbyuser, numshardedtables as stabs, sizeofshardedtables as sizestabs, numduplicatedtables as dtabs, sizeofduplicatedtables as sizedtabs, numsingleshardqueries as numssq, nummultishardqueries as nummsq, numcrossshardqueries as numcsq, cost FROM SHARDINGADVISOR_CONFIGDETAILS ORDER BY rank; RANK CHO STABS SIZESTABS DTABS SIZEDTABS NUMSSQ NUMMSQ NUMCSQ COST ---------- --- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- 1 Y 2 94517 9 2143864 12 2 0 337 2 2 108302 9 2006018 9 5 0 484 3 3 156206 8 1526974 8 6 0 533 この例ではパーティショニング案に3つの候補がある SHARDED表の個数 DUPLICATED表の個数 ※クロス・シャード・クエリーの個数 マルチ・シャード・クエリーの個数 シングル・シャード・クエリーの個数 ※外部結合を必要とするマルチ・シャード・クエリー
  39. Copyright © 2024, Oracle and/or its affiliates | 45 製品ページ

    • Globally Distributed Database マニュアル • Globally Distributed Database 23aiガイド • Oracle Database 23aiでの変更点 関連ブログ記事 • Oracle Globally Distributed Database の力の解明: Oracle Database 23aiの進化 (2023/10) • Oracle Globally Distributed Databaseを使用した、AIおよびML駆動型Fintechのためのハイパースケーラブ ル・インフラストラクチャの構築 (2023/12) • Oracle Database 23ai:Oracle Globally Distributed DatabaseのRaftレプリケーションサポート (2024/01) • Oracle Globally Distributed DatabaseはMunich Re HealthTechの複数国にまたがるデータ・レジデンシーの 課題に対応 (2024/05) 参考情報
  40. 最高の顧客体験と高い生産性を実現するフルマネージドクラウドサービス Oracle Globally Distributed Autonomous Database Copyright © 2024, Oracle

    and/or its affiliates | 46 Globally Distributed Database ハイパースケール、データ主権、障害隔離 データセンタ、地域、国を超えたデータ分散 Autonomous Database Service 究極のパフォーマンスとセキュリティ 自動化されたデータベース操作 組み込みのローコードツール Globally Distributed Autonomous Database 最も低いTCO 最高のエクスペリエンス