ストリームコネクトのスキーマ管理

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:4分
  • スキーマをインポートして作成し、Apache Avro 形式でメッセージを送受信します。Avro 形式を使用することで、ペイロードのサイズを減らし、ローカルの Kafka インスタンスへの統合を簡素化できます。

    Avro は、スキーマを使用してエンコードされたデータを構造化するオープンソースのデータシリアル化システムです。Avro スキーマを使用して、データをプレーンテキストの JSON から Avro バイナリ形式に変換したり、その逆を行ったりすることができます。スキーマを ServiceNow に保存することで、ストリームコネクトプロデューサーとコンシューマーがスキーマを使用して Avro メッセージをシリアル化できます。

    次の画像は、ストリームコネクトのスキーマ管理の概要を示しています。スキーマレジストリに保存されるスキーマを使用して、プロデューサーとコンシューマーのメッセージをプレーンテキストから Avro 形式に変換したり、その逆を行ったりすることができます。

    ストリームコネクトが、スキーマレジストリに保存されているスキーマを使用して Kafka メッセージをさまざまな形式に変換する方法を示す図。

    スキーマ

    Confluent レジストリからスキーマをインポートするか、または JSON ファイルをアップロードするか、スキーマを JSON 形式の文字列として直接入力して独自のスタンドアロンスキーマを作成できます。

    スキーマがインポートまたは作成されると、Confluent スキーマとスタンドアロンスキーマの両方が保存されるストリームコネクトスキーマ [stream_connect_schema] テーブルで確認できます。さらに、Confluent スキーマは Confluent ストリームコネクトスキーマ [confluent_stream_connect_schema] テーブルでも確認できます。スタンドアロンスキーマは、スタンドアロンストリームコネクトスキーマ [standalone_stream_connect_schema] テーブルにあります。

    すべてのスキーマには、スキーマのグローバルな一意の識別子であるスキーマ ID があります。Confluent スキーマの場合、スキーマ ID は Confluent レジストリからインポートされます。スタンドアロンスキーマの場合、スキーマ ID はローカルで生成され、インスタンス上で一意です。デフォルトでは、生成されるスキーマ ID の値は、インスタンスで使用可能な最大スキーマ ID の次の値です。たとえば、スキーマの ID 番号が 1 から 5 の場合、次に作成するスキーマのスキーマ ID は 6 になります。このデフォルト値は変更できます。

    スキーマ ID はレジストリごとに一意です。たとえば、2 つのスキーマは、異なるレジストリにある限り、両方とも 1 つの ID を持つことができます。

    スキーマレジストリ

    すべてのスキーマはレジストリに属します。ServiceNow のスキーマレジストリには、Confluent スキーマレジストリとスタンドアロンスキーマレジストリの 2 種類があります。

    どちらのスキーマレジストリにも、[更新セット内で追跡] オプションがあります。このオプションを有効にすると、そのレジストリ内のスキーマが更新セットに保存されます。スキーマを更新セットに保存すると、ある環境から別の環境に移行できるようになります。移行する環境によってはスキーマ ID が変わる可能性があるため、このオプションは、Confluent スキーマレジストリではデフォルトでオフになっています。スタンドアロンスキーマレジストリでこのオプションが有効になっているのは、スキーマを手動で作成している場合、移行する環境によってスキーマ ID が変わる可能性が低いためです。いずれかのレジストリのデフォルト設定を変更するには、 すべて > 統合ハブ > スキーマレジストリをクリックし、レジストリを選択して、[ 更新セットで追跡 ] オプションを変更します。

    ワイヤレベルのメッセージ形式

    ServiceNow では、相互運用性を求めて、他のシステムで使用されるものと同様のワイヤレベルのメッセージ形式を使用します。最初のバイトは 0 に設定され、次の 4 バイトはスキーマ ID に使用されます。残りのバイトは、Avro 形式でシリアル化されたデータに使用されます。
    バイト 0 マジックバイト。
    バイト 1 ~ 4 スキーマ ID。
    残りのバイト Avro 形式でシリアル化されたデータ。

    プロデューサーとコンシューマー

    ストリームコネクトのプロデューサーとコンシューマーは、Avro 形式を使用するよう構成できます。

    プロデューサーを構成する場合は、使用するスキーマを指定するだけです。その後、プロデューサーを実行すると、メッセージペイロードが JSON で生成され、指定されたスキーマを使用して Avro 形式に自動的に変換されます。プロデューサーの詳細については、「Kafka Producer step」または「ProducerV2 API」を参照してください。

    コンシューマーの構成も同様です。シリアル化形式を [エンコード済み] に指定し、スキーマレジストリを選択します。コンシューマーが Avro 形式でメッセージを受信すると、メッセージで受信したスキーマ ID のスキーマに従って、自動的に JSON に変換されます。詳細については、Kafka メッセージトリガーに関する情報、または ETL変換マップスクリプトの各コンシューマーを参照してください。

    プラグイン

    スキーマ管理機能には、ServiceNow Stream Connect Installer [com.glide.hub.stream_connect.installer] プラグインが必要です。