Skip Navigation
Show nav
Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
    • .NET
  • ドキュメント
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log inorSign up
View categories

Categories

  • Heroku のアーキテクチャ
    • Dyno (アプリコンテナ)
      • Dyno Management
      • Dyno Concepts
      • Dyno Behavior
      • Dyno Reference
      • Dyno Troubleshooting
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • Developer Tools
    • コマンドライン
    • Heroku VS Code Extension
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリーとインテグレーション
    • 継続的統合
  • 言語サポート
    • Node.js
      • Troubleshooting Node.js Apps
      • Working with Node.js
      • Node.js Behavior in Heroku
    • Ruby
      • Rails のサポート
      • Bundler の使用
      • Working with Ruby
      • Ruby Behavior in Heroku
      • Troubleshooting Ruby Apps
    • Python
      • Working with Python
      • Python でのバックグランドジョブ
      • Python Behavior in Heroku
      • Django の使用
    • Java
      • Java Behavior in Heroku
      • Working with Java
      • Maven の使用
      • Spring Boot の使用
      • Troubleshooting Java Apps
    • PHP
      • PHP Behavior in Heroku
      • Working with PHP
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
    • .NET
      • Working with .NET
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres スターターガイド
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
      • Migrating to Heroku Postgres
    • Heroku Data For Redis
    • Apache Kafka on Heroku
    • その他のデータストア
  • AI
    • Vector Database
    • Working with AI
    • Heroku Inference
      • AI Models
      • Inference Essentials
      • Inference API
      • Quick Start Guides
    • Model Context Protocol
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
      • シングルサインオン (SSO)
    • Private Space
      • インフラストラクチャネットワーキング
    • コンプライアンス
  • Heroku Enterprise
    • Enterprise Accounts
    • Enterprise Team
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Salesforce とのインテグレーション
  • データベースとデータ管理
  • Heroku のストリーミングデータコネクター

Heroku のストリーミングデータコネクター

日本語 — Switch to English

この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。

最終更新日 2023年12月08日(金)

Table of Contents

  • Heroku アプリの設定
  • Heroku アドオンの設定
  • Heroku のストリーミングデータコネクターの設定
  • コネクターの管理
  • コネクターの破棄

この記事では、Heroku Postgres イベント用に Change Data Capture (CDC) を設定し、Private Space または Shield Private Space にプロビジョニングされた Apache Kafka on Heroku アドオンにそれらのイベントをストリーミングする方法について説明します。このプロセスは、大きく分けて 3 つの手順で構成されます。

  1. Private Space または Shield Private Space にアプリを作成する
  2. Private または Shield の Heroku Postgres アドオンと、Private または Shield の Apache Kafka on Heroku アドオンを新しいアプリにプロビジョニングする。
  3. ストリーミングデータコネクターを作成して Postgres から Kafka への CDC イベントを有効にする。

ストリーミングデータコネクターを最適に設定する方法についての詳細は、「Heroku のストリーミングデータコネクターのベストプラクティス​」を参照してください。

Heroku アプリの設定

まず、Private Space または Shield Private Space を作成します。Space が利用可能になったら、その Space にアプリを作成できます。

$ heroku spaces:create --region virginia --team my-team-name --space myspace
$ heroku spaces:wait --space myspace
$ heroku apps:create --space myspace my-cdc-app

Heroku アドオンの設定

次に、2 つの Private または Shield のデータアドオンをアプリにアタッチする必要があります。

Postgres アドオンはバージョン 10 以上である必要があります。Kafka アドオンはバージョン 2.3 以上である必要があります。

$ heroku addons:create heroku-postgresql:private-7 --as DATABASE --app my-cdc-app
$ heroku addons:create heroku-kafka:private-extended-2 --as KAFKA --app my-cdc-app

アドオンのプロビジョニングの進行状況は、次のようにして監視できます。

$ heroku addons:wait --app my-cdc-app

アドオンが利用可能になったら、スキーマとデータを Postgres データベースにインポートします。

Heroku のストリーミングデータコネクターの設定

Private Space または Shield Private Space アプリで Heroku Postgres アドオンと Apache Kafka on Heroku アドオンを設定したら、コネクターをプロビジョニングできます。

最初に、CLI プラグインをインストールします。

$ heroku plugins:install data

コネクターを作成​するには、いくつかの情報を収集する必要があります。

  1. Kafka アドオンの名前
  2. Postgres アドオンの名前
  3. そこで発生したイベントをキャプチャする Postgres テーブルの名前
  4. (オプション) キャプチャイベントから除外​する列の名前

Postgres データベースでイベントをキャプチャするためには、いくつかの要件が満たされている必要があります。

  • データベースのエンコードが UTF-8 であること
  • その時点でテーブルが存在していること
  • テーブルにプライマリキーがあること
  • テーブルがパーティション分割されていない​こと
  • テーブル名に [a-z,A-Z,0–9,\_]​ 以外の文字が含まれていないこと
  • Kafka Formation で直接の Zookeeper アクセスが無効になっていること

キャプチャするテーブルの選択には注意が必要です。1 つのコネクターでは、多くのテーブルからの大量のイベントを処理しきれない場合があります。

次に、コネクターを作成できます。Postgres アドオンと Kafka アドオンの名前に加えて、データベースキャプチャイベントに含める完全修飾テーブルのリストが必要です。

$ heroku data:connectors:create \
    --source postgresql-neato-98765 \
    --store kafka-lovely-12345 \
    --table public.posts --table public.users

プロビジョニングの完了まで約 15 ~ 20 分かかることがあります。コネクターのプロビジョニングの進行状況は、次のようにして監視​できます。

$ heroku data:connectors:wait gentle-connector-1234

ストリーミングデータコネクターでは、データの変更をキャプチャするために選択したテーブルごとに、Kafka クラスターにトピックが作成されます。コネクターが利用可能になったら、新しく作成された Kafka トピックなどの詳細を表示​できます。

$ heroku data:connectors:info gentle-connector-1234
=== Data Connector status for gentle_connector_1234
Name:   gentle_connector_1234
Status: available

=== Configuration
Table Name   Topic Name
public.posts gentle_connector_1234.public.posts
public.users gentle_connector_1234.public.users

これらのトピックは次のパラメータ​で設定されます。

  • partition_count​: 32
  • replication_factor​: 3
  • cleanup_policy​: delete
  • retention_time_ms​: 1209600000

プリンシパル (Kafka ユーザー) は、ストリーミングデータコネクターによって作成されたテーブルトピックに対して、Read​ および Describe​ アクセス権​を持ちます。Write​、Delete​、および Alter​ 操作は拒否されます。

この機能によって、各コネクターのハートビートトピック​も作成されます。プリンシパルは、ハートビートトピックに対しても Read​ および Describe​ アクセス権を持ちます。

コネクターの管理

作成したコネクターを管理するために、いくつかの操作を実行できます。

一時停止または再開

新しいイベントの処理を一時停止​できます。コネクターを一時停止すると、再開​するまでの間、追加のレコードのポーリングが停止されます。2 つの状態は、次のようにして簡単に切り替えることができます。

# to pause
$ heroku data:connectors:pause gentle-connector-1234

# to resume
$ heroku data:connectors:resume gentle-connector-1234

通常の動作では、コネクターはコネクターが一時停止している間に発生した変更イベントを失うことはありません。コネクターは Postgres データベースのレプリケーションスロットを使用して進捗を追跡し、再開時にデータを失うことなく中止したところから取得します。

 

コネクターを「一時停止」状態にしたまま数時間放置しないでください。一時停止したコネクターによって WAL が削除されず、それによってプライマリデータベースにリスクが生じる可能性があります。コネクターを長期間一時停止したままにするよりは、破棄することをお勧めします。

 

コネクターが一時停止中に発生した変更イベントは、Kafka に送達されることが保証されません​。フェイルオーバーが発生した場合 (システム障害または定期的なメンテナンスによる)、コネクターの一時停止後の変更イベントは失われます。

 

稼働中のデータベースでコネクターが非常に長期間一時停止する場合、レプリケーションスロットにより Postgres では未読のログ先行書き込み (WAL) が削除されません。その結果、WAL ドライブがいっぱいになり、データベースがシャットダウンする原因となります。自動化のおかげでこれらの状況は一般的に事前に検出されますが、最悪の場合、データベースを保護するためにレプリケーションスロットを削除する必要があります。そのようなまれな場合、変更イベントは Kafka に送達されません。

設定の更新

コネクターに関連付けられた特定のプロパティを CLI から変更できます。これらのプロパティには以下の値が含まれます。

プロパティ 設定可能な値 デフォルト値 詳細
decimal.handling.mode​ precise​、double​、string​ precise​ ドキュメント​
hstore.handling.mode​ map​、json​ map​ ドキュメント​
time.precision.mode​ adaptive​、adaptive_time_microseconds​、connect​ adaptive​ ドキュメント​
interval.handling.mode​ numeric​、string​ numeric​ ドキュメント​
tombstones.on.delete​ true​、false​ true​ ドキュメント​
binary.handling.mode​ bytes​、base64​、hex​ bytes ドキュメント​

たとえば、tombstones.on.delete​ を false​ に更新できます。

$ heroku data:connectors:update gentle-connector-1234 \
  --setting tombstones.on.delete=false

コネクターを操作するときは、推奨されるベストプラクティス​について理解しておくことをお勧めします。

Heroku によって管理される設定

ほとんどの設定プロパティは Heroku によって完全に管理され、必要に応じて変更されます。

プロパティ 管理される値 詳細
heartbeat.interval.ms​ 60 秒 ドキュメント​

テーブルおよび除外される列を更新する

除外される列のほかに、コネクターの Postgres テーブルも変更できます。

たとえば、public.parcels​ テーブルを追加し、public.posts​ テーブルを削除できます。

$ heroku data:connectors:update gentle-connector-1234 \
  --add-table public.parcels \
  --remove-table public.posts

新しいテーブルは、設定に概略を示すものと同じ要件に従う必要があります。

同様に、除外される列を追加および削除できます。

$ heroku data:connectors:update gentle-connector-1234 \
  --exclude-column public.parcels.address \
  --remove-excluded-column public.posts.keys

コネクターの破棄

コネクターの破棄​を CLI から実行できます。

このコマンドによって、イベントの生成に使用される Kafka トピックは破棄されません​。トピックのライフサイクルは別途管理する必要があります。

$ heroku data:connectors:destroy gentle-connector-1234

関連カテゴリー

  • データベースとデータ管理
MuleSoft への Heroku データサービスの接続 Heroku ストリーミングデータコネクターのベストプラクティス

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure
  • .NET

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing
  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Github
  • LinkedIn
  • © 2025 Salesforce, Inc. All rights reserved. Various trademarks held by their respective owners. Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States
  • heroku.com
  • Legal
  • Terms of Service
  • Privacy Information
  • Responsible Disclosure
  • Trust
  • Contact
  • Cookie Preferences
  • Your Privacy Choices
OSZAR »