ストリームコネクトのスキーマ管理
スキーマをインポートして作成し、Apache Avro 形式でメッセージを送受信します。Avro 形式を使用することで、ペイロードのサイズを減らし、ローカルの Kafka インスタンスへの統合を簡素化できます。
Avro は、スキーマを使用してエンコードされたデータを構造化するオープンソースのデータシリアル化システムです。Avro スキーマを使用して、データをプレーンテキストの JSON から Avro バイナリ形式に変換したり、その逆を行ったりすることができます。スキーマを ServiceNow に保存することで、ストリームコネクトプロデューサーとコンシューマーがスキーマを使用して Avro メッセージをシリアル化できます。
次の画像は、ストリームコネクトのスキーマ管理の概要を示しています。スキーマレジストリに保存されるスキーマを使用して、プロデューサーとコンシューマーのメッセージをプレーンテキストから Avro 形式に変換したり、その逆を行ったりすることができます。
スキーマ
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 が変わる可能性が低いためです。いずれかのレジストリのデフォルト設定を変更するには、 をクリックし、レジストリを選択して、[ 更新セットで追跡 ] オプションを変更します。
ワイヤレベルのメッセージ形式
| バイト 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] プラグインが必要です。