※これはGlobal Active Tables – Simplicity Hides Complexityの翻訳です。

※本機能は日本の2リージョンでは2023/10現在、未リリースです。

このブログでは、Global Active Tables の基礎となるアーキテクチャ、構成、および操作に関する技術的な詳細について説明します。 概要、価値提案、ビジネスユースケースに興味がある場合は、このブログを参照してください。

私は「シンプル」と「複雑」という言葉が大好きです。 興味深いと思います。 これらは意味的には対義語です。 しかし、これらは両方の単語に隠された「シンプル(SIMPLE)」と「複雑(COMPLEX)」という重複する文字列と深く結びついており、「シンプルさは複雑さを隠す」、「複雑さはシンプルさを隠す」というデザイン上の課題に対する私の見解とよく一致しています。 どちらも扱いづらい難題です! 一方の解決に努力めながら、もう一方を解明します。

Oracle NoSQL の Global Active Table は、このような偉業を備えた新機能です。

根底にある技術的な複雑さを解明し、ユーザーに絶対的なシンプルさを提供し、グローバルなビジネス データ アクセスに対する即時の機敏性を提供します。

はじめに

今日の競争の激しいグローバルなビジネス環境において、企業は世界中で 24 時間 365 日稼働しながら、迅速にイノベーションを起こし、モバイルファーストの応答性の高いアプリケーションをユーザーに提供する必要があります。 応答性の高いユーザー体験を提供するために、グローバルアプリケーションを複数のリージョンに展開して保守する場合、複雑さと困難な作業が発生します。

フェニックス (米国)、ヨハネスブルグ (南アフリカ)、東京 (日本) の 3 つの異なる地域で顧客にサービスを提供するモバイル アプリケーション企業を想像してください。 次の図は、3 人家族が 3 つの異なる地域でモバイル デバイスを使用していることを表しています。2名は別々に米国から南アフリカと日本に長期出張中です。 これらのユーザーは、モバイル アプリケーションを使用する際に高速でスムーズなオンライン体験を期待しており、各ローカルリージョンに保存されているデータにアクセスすることで予測可能な低遅延が実現します。

ヨハネスブルグでスマートフォンを介してユーザープロフィールを更新すると、新しいデータはすぐにフェニックスと東京に複製されます。 家族のすべての人が自分の地域の最新の変化を確認します。 フェニックスまたは東京でメンバーの更新が発生した場合にも、同様のレプリケーションが実行されます。 すべてのメンバーの更新がすべてのリージョンで同時に行われるとします。 リージョン間のデータ レプリケーションでは、複雑なデータ競合に対処し、すべてのリージョンに正しいデータが存在するようにする必要があります。 もう 1 つの課題は、ありそうもない大惨事がデータ センターの 1 つに影響を及ぼし、ダウンさせた場合はどうなるかということです。

 

上記のシナリオは、ユーザーベースにそのようなサービスを提供する企業が直面する複雑さと困難な取り組みの表面をなぞっただけです。さらにいくつかの課題を次に示します。

  • 特定のリージョンにおける予期せぬダウンタイムの影響を軽減
  • マルチリージョンのデータのバックアップと復元対策を実装
  • さまざまなクラウド サービスを統合する労力を最小限に
  • 複数のリージョンで更新が同時に実行される場合のデータの競合を解決
  • すべてのリージョンでの期限切れデータの自動クリーンアップの管理
  • マルチアクティブなグローバルアプリケーションに適したデータモデルを決定し、リージョン全体でプライマリ/シャード キーを均一に保持
  • ローカルの書き込み/読み取りなど、さまざまな地域データベース操作を管理
  • 書き込み操作がソース リージョンで実行された順序で複数のリージョンに書き込み操作を配信
  • 基盤となるインフラストラクチャの運用の複雑さを管理し、年中無休の高可用性と大規模な復元力を実現
  • データを損失することなく、進行中の操作の遅延やスループットに影響を与えることなく、データをグローバルにレプリケート
  • 投資コストと信頼性、パフォーマンス、セキュリティ、効率性の間のトレードオフに関する悩み

これらすべての課題に対処するのは大変な努力です。

Global Active Table は、インテリジェントなクロスリージョン・データレプリケーション・アーキテクチャを備えた強力な機能であり、ベースの複雑さをすべて隠します。 以下を実装する企業向けの Global Active Table を使用すると、物事が「魔法のように」起こります。

  •  1 桁ミリ秒の予測可能な遅延体験を世界中のユーザーに提供する、マルチアクティブな地域分散アプリケーション
  • 大災害時のビジネスの中断を最小限に抑えるためのビジネス継続性と災害復旧
  • アプリケーションとデータのBlue – Greenデプロイ

無限の可能性!

美しさ

シンプルに滑らかです! Global Active Table の下には、リージョン間のデータ レプリケーションを自動化するワークフローを備えた Cloud Data Pipelines と呼ばれるアーキテクチャが隠されています。

ユーザー体験はシンプルに

数回のクリックまたは数行のコードを実行するだけで、NoSQL テーブルを複数のリージョンの Global Active Table (GAT) として構成できます。 出来上がり! あなたのビジネス アプリケーション・データに世界中からすぐにアクセスできるようになりました。

1 つのサービス、1 つの支払いで良く、前述したすべての複雑なことはありません。 顧客のニーズに応え、イノベーション、ビジネスチャンス、成長に完全に集中できます。 現在の世界的なビジネス環境では、より少ないリソースでより多くのことを行うことが必須です。 Global Active Table のスケールアップまたはスケールダウンは非常に簡単で、基盤となるインフラストラクチャのリソース消費は透過的に自動化されます。

 

 

NoSQL による複雑さの管理

NoSQL の Global Active Tables は複雑さを解決し、絶対的なシンプルさを提供します。 Oracle NoSQL Cloud Serviceは、送信側と受信側のリージョン・テーブルのレプリカ間でデータを複製する自動ワークフローを管理し、複雑な課題を解決します。複雑さを隠す根本的なメカニズムを覗いてみましょう。

 
Global Active Talbeのアーキテクチャの概要
Cloud Data Pipeline

この「魔法の杖」はユーザー レベルでの作業をシンプルにし、送信側の領域から受信側の領域へのデータ レプリケーションのプロセスの複雑な調整を管理します。基礎となるアーキテクチャは、前述の課題を解決しながらこれらすべての驚異を実現します。

概念的なコンポーネント

  • Global Active Table : 異なるOCI (Oracle Cloud Infrastructure)リージョン間で複製された同一のスキーマを持つ、マルチアクティブなRegion Table Replicaのグループ。 リージョン・レプリカで実行されたテーブル操作は、参加しているリージョンにレプリケートされます。 グループ内の各リージョン・テーブルのレプリカは、変更元としても、変更先の受信側としても機能します。 プロビジョニングされた容量モデルまたは、オンデマンドの容量モデルを使用して、どのテーブルをGlobal Active Tableとして構成するかを選択できます。
  • Sender: ローカル変更が発生したデータ・レプリケーション ストリームのソースリージョンのアクターで、送信プロセスを管理します。
  • Receiver: データ・レプリケーションストリームの宛先領域にあるアクターで、受信プロセスを管理します。
  • Exchange Zone: レプリケーション中のテーブル操作データとメタデータの中間ストレージ メカニズム。
  • Replication Transports: SenderリージョンとReceiverリージョン間の導管のネットワークで、リージョン間でテーブル データを複製します。

 

 

自動化ワークフロー

Cloud Data Pipeline は、Senderのリージョンでのテーブル操作によるデータ変更がReceiverのリージョンに確実にレプリケートされるようにします。上の図は、特定のリージョンがSenderおよびReceiverとして機能し、アクティブ – アクティブのクロスリージョン・レプリケーションを提供する双方向レプリケーションを示しています。 NoSQL によって管理されるワークフローの複雑さについて詳しく見てみましょう。

上の図に示すレプリケーション ワークフロー:

  • 1 – Global Active Tableは、送信側のRegion Table Replicaを体現します。アプリケーションのローカル書き込み操作 (挿入、更新、削除) からのデータ変更をキャプチャし、ローカル読み取り操作を提供します。 これらのテーブル操作はストリーム操作をトリガーします。
  • 2 – SenderはGlobal Active Table内のローカルデータの変更を監視し、レプリケーション・パッケージを準備して中間ストレージに保存します。 Senderは、Receiverおよび Exchange Zoneとレプリケーションプロトコルを調整し、レプリケーション ストリーミングの進行状況を追跡し、中間ストレージを管理します。
  • 3 – Exchange Zoneは、SenderとReceiver間のレプリケーションプロセスを簡単にする主要なデータとメタデータを保存・保護します。 以下は、レプリケーションが完了するまで保持されます。
    • スナップショット データ、メタデータ、およびGlobal Active Table内の既存データの初期レプリケーションのステータス。
    • クロスリージョンのリクエスト、レスポンス、およびReceiverの消費ステータス。
  • 4 – Replication Transportsは、ソースリージョンと宛先リージョン間のレプリケーション・ストリーミング用に、安全に暗号化された導管のネットワークを提供します。
  • 5 – Receiverは、Exchange Zoneのレプリケーションデータとメタデータを監視して取得し、ReceiverのRegion Table Replicaでテーブル操作を再生します。ReceiverとSenderは継続的に通信し、ステータスを更新し、レプリケーション プロセス中の諸事を管理します。
  • 6 – Region Table Replicaは、受信側のRegion Table Replicaを表します。 Receiverの領域でテーブル操作を再生することで、データの変更をキャプチャします。

組み込み済みの他の機能

  • フォールト・トレラントなリージョナル レプリケーション
    • Oracle NoSQL Database Cloud Serviceは、Global Active Tableを含む高可用性を実現するために、デフォルトで各OCIリージョンの3つのOCI可用性ドメイン(AD)/フォルト・ドメイン(FD)にNoSQLテーブルをレプリケートします。詳細はこちら
  • 競合解決は最後の書き込みが優先
    • マルチアクティブのアプリケーションのシナリオでは、複数のリージョンにあるGlobal Active Tableの同じレコードに対して同時更新操作が同時に実行されると、ワークフローが自動的に競合を検出して解決し、すべてのリージョンで最新の変更をレプリケートします。詳細はこちら
  • 競合のなくレプリケートされたデータ型
    • Global Active Table は、Positive-Negative Counter CRDT (Conflict-Free Replicated Data Type) を提供します。 このデータ型は、さまざまなリージョンにわたる Global Active Table に実装でき、アプリケーションが各リージョンで独立して更新操作を実行できるようになります。Global Active Tableのデータ変更は同時に行われ、同期されません。 CRDT アルゴリズムを使用すると、同時変更をリージョン間でマージし、すべてのグローバル アクティブ テーブル間で均一な共通状態に収束できます。詳細はこちら
  • 有効期間
    • インテリジェントな自動クリーンアップ・メカニズムにより、アプリケーションはテーブル行に時間枠を設定でき、その後、行は期限切れになり、自動的に削除されます。 Global Active Tables で Time to Live (TTL) が有効になっている場合、リージョン全体のすべてのテーブル レプリカは、Senderのリージョン内のテーブルの TTL と同じ値になります。 テーブル行が他のリージョンにレプリケートされると、その有効期限が絶対タイムスタンプとしてレプリケートされるため、その行がいつレプリケートされたかに関係なく、すべてのリージョンで同時に期限切れになり、削除されることが可能になります。 TTL プロセスは、どの領域でも書き込み/読み取り容量を消費しません。 無料です。詳細はこちら
  • レコードレベルの一意の ID
    • Global Active Tables は、UUID データ型を使用して一意のレコード レベルの ID を作成できるため、参加しているリージョン全体でユニバーサル・プライマリ/シャードキーを作成するという複雑な作業が不要になります。 新しいレコードが挿入されるたびに、Regional Table Replicaに対して一意の UUID ベースの ID が自動生成されます。 詳細はこちら
  • オンデマンド、またはプロビジョニングされたキャパシティモデル
    • Global Active Tables は、テーブル レベルでのワークロードごとのキャパシティ・プランニングの柔軟性を構築します。 プロビジョニングされた容量モードでは、予想されるアプリケーションのワークロードに応じて、書き込みおよび読み取り容量の制限が事前に予約されます。 請求は予約された書き込みおよび読み取り容量に基づいて行われます。 オンデマンド容量モデルは、アプリケーションに必要な書き込みと容量をリアルタイムで動的に調整します。 請求は、実際に消費された書き込みおよび読み取り容量に基づいて行われます。 ビジネスのユースケースに応じて、どちらのモデルも費用対効果の高いオプションを提供します。 詳細はこちら

Global Active Tableのインターフェース

Global Active Table は、さまざまなインターフェイスを提供します。

  • NoSQL OCI コンソール
  • プログラミングインターフェース
    • NoSQL SDK
    • OCI Terraform
    • OCI SDK
    • OCI REST API

このブログでは、NoSQL OCI コンソールと Java SDK プログラミングインターフェイスを紹介し、2 つの簡単な手順でGlobal Active Tableを構成する方法を紹介します。 このブログでは、プログラミングインターフェイスについてさらに詳しく説明します。

 NoSQL OCI コンソール

このインターフェイスは、コードを書かずに Global Active Table を構成します。 わずか 2 ステップと数回のクリックで、Global Active Tables の「魔法」をすぐに体験できます。

設定フローチャート

以下は、Global Active Tableを 2 つのステップで作成するプロセスです。 1- ローカル リージョンに新しい NoSQL テーブルを作成します。 2- テーブルのレプリカをリモート リージョンに追加します。 構成が完了すると、いずれかのリージョンのローカルでの更新操作はすべて、もう一方のリージョンに自動的にレプリケートされます。

次の図は、左側に構成手順を示し、右側にテーブルの状態が Global Active Tables に変化することを示しています。 この図では、米国東部のアッシュバーンをリージョン 1 として、米国西部のフェニックスをリージョン 2 として使用しています。

ステップ 1: テーブルを作成する

Oracle NoSQL Database Cloud Serviceコンソールに進みます。 このステップは、Ashburn のコンソールにある空のテーブル リストから始まります。

[表の作成 (Create tabble)] をクリックし、続いて [拡張 DDL 入力 (Advanced DDL input)] をクリックします。 デフォルトのプロビジョンドキャパシティモデルを使用し、読み取り容量、書き込み容量、ディスクストレージ(GB)を入力します。

DDL 入力ボックスに次のように入力して、スキーマが凍結された新しいテーブルを作成します。

CREATE TABLE demoGlobalTable (id INTEGER,personInfo JSON,PRIMARY KEY(id)) with schema frozen

[表の作成 (Create table)] をクリックして、Ashburn リージョンにScheme state「Frozen」、Global activeが「No」である、demoGlobalTable という名前のシングルトン テーブルを作成します。

 

ステップ 2: レプリカを追加

テーブルリストの [demoGlobalTable] をクリックして [表情報] タブに移動します。 左側のサイドバーで「レプリカ(replica)」をクリックすると、「レプリカの追加(Add replica)」ダイアログボックスが表示されます。

Replication regionのドロップダウンメニューから us-phoenix-1 を選択します。

[レプリカの追加(Add replica)] をクリックして、AshburnリージョンとPhoenixリージョンの両方にGlobal Active Tableを構成します。

いずれかのリージョンでレコードの挿入を開始し、もう一方のリージョンにレプリケートされたデータを監視できます。

 
プログラミング・インターフェース

次の Java SDK の例では、わずか数行のコードで Global Active Tables を構成します。 上記のコンソールの例と同じパラメータを使用すると、

  • tableName demoGlobalTable
  • regionus-phoenix-1 

ステップ 1 では、DDL ステートメントを使用して、Ashburn リージョンに新しいシングルトン テーブルを作成しました。

ステップ 2 では、Java クラス AddReplicationRequest() を使用して、Phoenixリージョンにテーブルレプリカを追加しました、

プログラミングインターフェイスの詳細については、こちらのブログを参照してください。

まとめ

I n s t a n t   A g i l i t y .     A b s o l u t e   S i m p l i c i t y .    E n d l e s s   P o s s i b i l i t i e s .   

Oracle NoSQL Cloud Serviceは再び、世界規模でのビジネスの俊敏性とデータ・アクセスの境界を押し広げます。 グローバル アクティブ テーブルにより、ビジネス アプリケーションは、応答性の高いユーザー エクスペリエンスと常時稼働の可用性を提供し、いつでもどこでもデジタル市民の要求に応えることができます。 Oracle NoSQL Cloud Serviceはすべての複雑さを管理し、企業はシンプルさとコスト効率のメリットを享受します。

競争が激化する世界情勢では、一秒一秒が勝負です。 ビジネスの成功と存続は、スピード、効率、信頼性、コストによって測定されるイノベーション、ソリューションの提供、運用にかかっています。 新しい機会が出現したとき、企業は複雑さを許容できません。 Global Active Tables を使用すると、ビジネスのスピードに合わせてリージョン間のデータ レプリケーションを簡単に有効にすることができます。

次のデータ プラットフォームをデプロイすることを想像してください。 エンタープライズ ソリューション アーキテクトは、オープンソースまたはクローズドソースの製品とサービスの迷路を突き抜け、フレームワークを導き出す必要があります。 Global Active Tables を使用すると、さまざまなシナリオに合わせてデプロイメントを数分で作成、削除、再構成、再構築、拡張することができます。こちらのブログでは、この俊敏性を可能にするさまざまなプログラム インターフェイスについて説明しています。

グローバル アクティブ テーブルを試してみてください。 こちらがスタートガイドです。