Oracle GoldenGate 23aiでPostgreSQL配列データ・ベクトルをOracle Databaseにレプリケートする方法 (2024/11/01)

Oracle GoldenGate 23aiでPostgreSQL配列データ・ベクトルをOracle Databaseにレプリケートする方法 (2024/11/01)

https://blogs.oracle.com/dataintegration/post/how-to-replicate-postgresql-array-data-vectors-with-goldengate

投稿者: Shrinidhi Kulkarni | Principal Product Manager

OCI GoldenGate 23ai for PostgreSQL : Oracle GoldenGate 23ai が、OCI GoldenGate for Oracle および PostgreSQL データベースで利用できるようになりました。 

注記:

21cから23aiへの直接アップグレードはご利用いただけません。Oracle DatabaseまたはPostgreSQLでOracle GoldenGate 23aiを使用するには、新しいデプロイメントを作成する必要があります。Oracle GoldenGate 23aiの新機能の一つは、PostgreSQLおよびほとんどのベンダー派生製品における配列、pgvector拡張、tsquery、tsvectorのキャプチャと配信です。

PopstgreSQLの配列データ型の理想的な使用例の一つは、ベクトルの保存です。地理データや、データベース内の類似検索のためのベクトル埋め込みを保存できるかもしれません。PostgreSQLでは、ベクトルをネイティブに扱う方法として配列が採用されています。これらのベクトルは、データに対するセマンティック検索の強化に役立ちます。

 

ビジネスユースケース:

大型ショッピングモール向けに、LLMを活用したAIチャットボットを開発していると想像してみてください。このチャットボットは、大型ショッピングモールの屋内ナビゲーションシステムとしても機能します。このシステムでは、ユーザーはモール内の店舗、施設、アメニティを検索し、目的地までの詳細な道順を案内します。モール内の各位置はベクトル(x, y座標)で表されます。このAIチャットボットはOCI上でホストされ、類似検索によって検索エクスペリエンスが向上します。

例えば、ユーザーがショッピングモール内の現在地から最も近いレストランを探したいというシナリオを考えてみましょう。
セマンティック検索アルゴリズムは、ユーザーのクエリ(「最寄りのレストラン」)を解釈し、ユーザーがショッピングモール内のレストラン施設を探していることを理解します。検索エンジンは、「最寄りのレストラン」というフレーズそのものを検索するのではなく、文脈を考慮し、場所の名前や説明に「レストラン」という単語が明示的に含まれていなくても、ユーザーのクエリとレストランとして機能する場所をマッチングします。システムは、ユーザーの現在地(ベクトルで表されます)とデータベース内の各レストランの場所との間の距離を計算します。次に、ユーザーの位置からの距離に基づいてレストランの場所をランク付けします。そして、保存されているベクトルとナビゲーションアルゴリズムを使用して、最も近いレストランの場所と、ショッピングモール内でそこへ至る詳細な道順をユーザーに返します。

レプリケーションの使用例:

Oracle GoldenGate 23aiは、PostgreSQLからOracle Database 23aiへのビジネスデータとベクターデータ(ARRAYまたはpgvectorに格納)のレプリケーションまたは移行をほぼリアルタイムで実現します。Oracle Database 23aiでは、ビジネスデータをベクターデータの隣に格納できます。

全体的なアーキテクチャ:

gg4pg_ベクター

コンポーネント:

  • OCI GoldenGate 23ai デプロイメント (Oracle および PostgreSQL)
  • PostgreSQL データベース 14.11 (ソース)
  • Oracle Database 23ai (ターゲット)

注意: 掲載時点では、Oracle 23ai データベースは特定の地域でのみ利用可能です。Oracle 23ai の提供状況については、 Oracle の製品ニュースを参照してください。

OCI GoldenGate デプロイメントの作成

  • OCI GoldenGate 23ai デプロイメントを作成します (PostgreSQL および Oracle 用)。
  • OCI コンソールから Oracle Database オプション内の GoldenGate に移動します。
  • OCI GoldenGateで、「デプロイメントの作成」オプションをクリックします。または、左側のメニューでデプロイメントをクリックします。
 

OCIPG4ブログ1.png

  • 「デプロイメントの作成」パネルで、名前と、必要に応じて説明を入力します。適切なコンパートメントを選択します。テストデプロイメントを作成するには、「開発」または「テスト」オプションを選択します。
  • 「<コンパートメント>のサブネット」ドロップダウンで、OCI GoldenGateサービステナンシーからプライベートエンドポイントを作成するプライベートサブネットを選択します。 
    注:デプロイメントを作成するときにのみ、プライベートサブネットを選択できます。
  • 次にライセンスの種類を選択し、オプションでGoldenGateコンソールのパブリックアクセスを有効にして、パブリックインターネット経由でデプロイメントに接続します。
    各種パラメータの詳細については、「データレプリケーションリソースの作成」
    をご覧ください。
  • デプロイメントタイプとして「データレプリケーション」を選択します。ドロップダウンから「PostgreSQL」を選択します。「バージョン」では、「バージョンを変更」をクリックし、利用可能なバージョン23.0.0.0(PostgreSQLの場合はoggpostgresql:23.0.0.0.0_240425.1035_977以降)を選択してください。GoldenGateデータレプリケーションデプロイメントのデフォルトバージョンはGoldenGate 21cに設定されています。
  • GoldenGate インスタンス名を指定し、資格情報ストア内で OCI IAM または GoldenGate を選択します。最後に、「作成」をクリックして、デプロイメント作成作業リクエストを開始します。

OCIPG4ブログ2

  • デプロイメントがアクティブ状態になったら、デプロイメントの詳細ページで「コンソールの起動」をクリックして、OCI GoldenGate デプロイメント コンソールにアクセスします。

OCIPG4ブログ3.png

 

 

 OCI GoldenGate接続の作成と割り当て

・OCI GoldenGate の概要ページで、「接続」をクリックします。 

OCIPG4ブログ4

 

 


  • ・「接続の作成」パネルで、「名前」や「説明」などの「一般情報」フィールドに入力します。接続を作成するコンパートメントを選択します。「接続タイプ」で「PostgreSQLサーバー」(ソースPostgreSQLデータベースはOCIコンピューティング上で実行されているため)を選択します。「次へ」をクリックします。 

    OCIPG4ブログ5.png

     

     

  • ・「接続の詳細」ページで、PostgreSQLデータベースの接続詳細を入力します。ユーザー名は、前の手順で作成したデータベースユーザーです。トラフィックルーティング方法を適切に選択します。
  • データベースがオンプレミスまたはOCI Computeの場合は、トラフィックがVCN内の同じサブネット内の専用エンドポイントを通過するように、「専用エンドポイント」を選択します。
  • ・最後に、「作成」をクリックして、接続作成作業要求を開始します。 

    OCIPG4ブログ6

     

     

  • ・ 接続がアクティブ状態になったら、その接続を PostgreSQL デプロイメントに割り当てて、ソースまたはターゲットとして使用できるようになりま   す。 

    OCIPG4ブログ7

     

     

  • ・[アクション] (3 つのドット) メニューの [接続のテスト] オプションをクリックして、PostgreSQL データベースへの接続を確認します。 

    テスト接続

 

レプリケーションテーブルにTrandataを追加する

  • ・デプロイメントの詳細ページで、「コンソールの起動」をクリックします。または、コンソールのURLをコピーしてブラウザに貼り付けることもできます。Oracle GoldenGate 23aiのデプロイメント・コンソールでは、データレプリケーション用のユーザー・インタフェースが刷新されています。 

    OCIPG4ブログ9

     

     

・ログインに成功すると、管理サービスのホームページが表示されます。

OCIPG4ブログ10

 

 


  • ・DB 接続に移動し、先ほど作成した PostgreSQL 接続をクリックします。PostgreSQL データベースに正常に接続されると、<database_name> に接続されていることが表示されます。
  • ・チェックポイント テーブルを作成するには、左側のメニューの「チェックポイント」オプションをクリックします。
  • ・左側のメニューの下にある Trandata オプションをクリックして、レプリケーションの一部となるテーブル/スキーマの trandata を追加します。 

    OCIPG4ブログ11

     

     

  • '+'アイコンをクリックしてトランデータを追加します 

    OCIPG4ブログ12

     

     

  • テーブル名と列名を入力するか、オプションで「すべての列」を選択します。[送信] をクリックします。 

    OCIPG4ブログ13

     

     

  • デプロイメントのホーム ページに戻るには、[ホーム] オプションをクリックします。

抽出プロセスを追加

  • 抽出セクションの「+」をクリックして、抽出の構成を開始します。 

    OCIPG4ブログ13

     

     

  • 「抽出の追加」パネルの「抽出情報」ページで、必要に応じて次のフィールドに入力し、「次へ」をクリックします。
  • 抽出タイプを選択します: 変更データキャプチャ抽出または初期ロード抽出 

    OCIPG4ブログ14

     

     

  • 抽出オプションページで「今すぐ開始」を選択すると、現在のタイムスタンプからデータのキャプチャが開始されます。2文字のトレイルファイル名を入力してください。その他のフィールドはデフォルト値のままで構いません。
  • PostgreSQL データベース接続用に先ほど作成したドメインとエイリアスを選択します。 

    OCIPG4ブログ15

     

     

  • プロファイルのデフォルトを選択します。そうでない場合は、新しいプロファイルを作成して、カスタムの自動開始または自動開始オプションを設定します。 

    OCIPG4ブログ16

     

     

  • パラメーター ファイル セクションで、スキーマ名またはテーブル名を追加するように編集します。 

    OCIPG4ブログ17

     

     

  • 最後に、「作成と実行」をクリックして抽出プロセスを開始します。
  • 抽出ステータスが実行中になったら、ソース テーブルに対していくつかの DML 操作を実行できます。 

    OCIPG4ブログ18

     

     

 ソースPostgreSQLレプリケーションテーブルでDMLを実行する

  • ソース テーブルには、名前 (varchar) と座標 (配列) の 2 つの列があります。 

    OCIPG4ブログ19

     

     

  • ソース PostgreSQL データベース テーブルでは、配列データ型を使用して位置データを保存し、各位置のベクトルを表すことができます。 

    OCIPG4ブログ20

    INSERT INTO mall_locations (name, coordinates) VALUES ('Store A', '{100.0, 50.0}');
    INSERT INTO mall_locations values ('Food Court', '{200.0, 150.0}');
    INSERT INTO mall_locations (name, coordinates) VALUES (‘Main Entrance’, ‘{0.0, 0.0}’),(‘Elevator Lobby’, ‘{50.0, 20.0}’),(‘Escalator’, ‘{75.0, 30.0}’),(‘Information Desk’, ‘{120.0, 40.0}’),(‘Restroom (Male)‘, ‘{150.0, 60.0}’),(‘Restroom (Female)‘, ‘{160.0, 60.0}’);

PostgreSQLデプロイメントからOracleデプロイメントへの配布パスを作成する

  • デプロイメント間のGoldenGate接続を作成する
  • 2 つの Oracle GoldenGate デプロイメント間の接続を作成できる GoldenGate 接続タイプを作成します。
  • OCI GoldenGateの概要ページの「接続」ページで、「接続の作成」をクリックします。名前と説明を入力し、適切なコンポーネントを選択します。
「タイプ」ドロップダウンの「汎用」から「GoldenGate」を選択します。 

OCIPG4ブログ21

 

 


  • 「次へ」をクリックして、接続の詳細ページに進みます。
  • 接続の詳細ページで、
ドロップダウンから対象のGoldenGateデプロイメント(この場合はOracleデプロイメント)を選択します。
(オプション)資格情報(ユーザー名とパスワード)を入力します。
必要に応じて、GoldenGateデプロイメントの詳細を手動で入力することもできます。 

OCIPG4ブログ21

 

 


  • 接続がアクティブ状態になったら、接続を GoldenGate for PostgreSQL デプロイメントに割り当てます。

ディストリビューションパスのユーザーとパス接続を作成する

  • GoldenGate for Oracle (ターゲット) デプロイメントでオペレーター ロールを持つユーザーを作成します。
  • 管理サービスで、左側のメニューにある「ユーザー管理」をクリックします。「ユーザー」セクションの「+」をクリックしてユーザーを作成します。
  • 「認証者」のドロップダウンから「パスワード」を選択し、ロールとして「オペレーター」を選択します。ユーザー名とパスワードを入力し、「送信」をクリックします。
  • OCI GoldenGate for PostgreSQL デプロイメントでは、上記の手順で作成されたネットワーク ユーザーを参照する資格情報エイリアスとドメインを作成します。

ディストリビューションパスを作成する

OCI GoldenGate for PostgreSQL デプロイメントで、Distribution Service に移動します。「Distribution Path」セクションで「+」をクリックし、パス名と説明を入力します。「Next」をクリックします。 

OCIPG4ブログ23

 

 


  • 「ソースオプション」ページで、ドロップダウンから「抽出」を選択すると、トレイルファイル名が自動的に入力されます。その他のフィールドはデフォルト値のままにしてください。
    トレイルファイル名は、「トレイル名」フィールドに手動で入力することもできます。 

    OCIPG4ブログ24

     

     

  • ターゲットオプションページで、
    プロトコルとしてwssを選択し、ホスト名としてターゲットOCI GoldenGate for OracleデプロイメントURL、ポート番号として443を入力します。ターゲットトレイルに2文字の名前を入力し、前の手順で作成した資格情報エイリアスを選択します。 

    OCIPG4ブログ25

     

     

  • 残りの値はデフォルトのままにして、「作成して実行」をクリックしてディストリビューションパスを開始します。「ディストリビューションサービス」ページで、ディストリビューションパスが作成され、「実行中」状態になっていることを確認できます。
    同様に、GoldenGate for Oracleデプロイメント内のレシーバーサービスにアクセスすると、同様のレシーバーパスが自動的に作成されていることがわかります。

Replicatを作成する

  • Replicat の作成に進む前に、ターゲット Oracle Database 23ai に Vector データ型のターゲット テーブルを作成します (まだ作成されていない場合)。
CREATE TABLE "GGADMIN"."MALL_LOCATIONS"
   (    "ID" NUMBER,
    "NAME" VARCHAR2(100 BYTE),
    "COORDINATES" VECTOR,
     PRIMARY KEY ("ID"));
  • GoldenGate for Oracle デプロイメントの管理サービスページに移動します。左側のメニューの Replicat セクションに移動します。「+」アイコンをクリックして Replicat を追加します。 

    OCIPG4ブログ26

     

     

  • Parallel Non-Integrated Replicatタイプを選択します。Replicatプロセスの名前と説明を入力します。 

    OCIPG4ブログ27

     

     

  • Replicatオプションセクションで、ディストリビューションパスの作成時に指定したトレイル名を入力します。ターゲットのOracle Database 23aiに接続するために作成したエイリアスをドロップダウンから
    選択します。さらに、先ほど作成したチェックポイント表を選択します。「管理オプション」では、デフォルト値をそのまま使用するか、「自動開始」および「自動再起動」オプションを設定できます。「次へ」をクリックしてパラメータファイルに移動し、レプリケーション表のMAP文を追加します。
  • 「作成と実行」をクリックします。Replicat が作成され、実行状態になっていることを確認します。 

    OCIPG4ブログ28

     

     

  • Replicat 名をクリックし、左側のメニューの統計セクションに移動します。 

    OCIPG4ブログ30

     

     

  • ターゲット Oracle Database 23ai テーブル上の複製されたレコードを確認します。
     

     

    OCIPG4ブログ31

 

Oracle GoldenGateを介してPostgreSQLのARRAYベクターデータ型をOracleのベクターデータ型に複製することで、豊富な配列データとコアビジネスデータセットをシームレスに統合し、AIユースケースを強化します。このプロセスにより、企業はベクター埋め込みを取引データや顧客データと並べて保存できるようになり、高度な分析と機械学習をサポートする統合ビューを構築できます。データの一貫性とリアルタイムアクセスを確保することで、企業はモデルのトレーニングを改善し、より深い洞察を引き出し、より情報に基づいた意思決定を行うことができ、最終的にはAI駆動型アプリケーションにおけるイノベーションと競争優位性を高めることができます。

コメント

このブログの人気の投稿

Oracle Database 19cサポート・タイムラインの重要な更新 (2024/11/20)

Oracle GoldenGate 23aiでMicrosoft Fabricでのオープン・ミラーリングがサポートされるようになりました (2024/11/19)

OCIサービスを利用したWebサイトの作成 その4~Identity Cloud Serviceでサイトの一部を保護 (2021/12/30)