tencent cloud

Data Transfer Service

Avroデモの説明

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-10-16 19:45:51
AI翻訳

デモの主要ロジック解説

Demo内のファイルの説明は以下の通りです。Java Demoを例に紹介します。
consumerDemo-avro-java\\src\\main\\resources\\avro-tools-1.8.2.jar:Avroプロトコル関連コードの生成に使用するツールです。
consumerDemo-avro-java\\src\\main\\java\\com\\tencent\\subscribe\\avro:Avroツールがコードを生成するディレクトリです。
consumerDemo-avro-java\\src\\main\\resources\\Record.avsc:プロトコル定義ファイルです。
Record.avscでは14個の構造(Avroではschemaと呼ばれます)を定義しています。その中の主要なデータ構造はRecordであり、binlog内の1件のデータを表すために使用されます。Recordの構造は以下の通りです。その他のデータ構造はRecord.avscで確認できます:
{
"namespace": "com.tencent.subscribe.avro", //Record.avsc内の最後の1個のschemaであり、「name」は「Record」と表示されます。
"type": "record",
"name": "Record", //「name」は「Record」と表示され、kafkaから消費するデータ形式を表します。
"fields": [
{
"name": "id", //idはグローバル増分IDを表します。その他のrecordの値の説明は以下の表の通りです。
"type": "long",
"doc": "unique id of this record in the whole stream"
},
{
"name": "version", //versionはプロトコルバージョンを表します。
"type": "int",
"doc": "protocol version"
},
{
"name": "messageType", //メッセージタイプです。
"aliases": [
"operation"
],
"type": {
"namespace": "com.tencent.subscribe.avro",
"name": "MessageType",
"type": "enum",
"symbols": [
"INSERT",
"UPDATE",
"DELETE",
"DDL",
"BEGIN",
"COMMIT",
"HEARTBEAT",
"CHECKPOINT",
"ROLLBACK"
]
}
},
{
……
},
}
Record内のフィールドタイプの説明は以下の通りです:
Record内のフィールド名
説明
id
グローバルに増加するID。
version
プロトコルバージョン、現在のバージョンは1です。
messageType
メッセージタイプ、列挙値:「INSERT」、「UPDATE」、「DELETE」、「DDL」、「BEGIN」、「COMMIT」、「HEARTBEAT」、「CHECKPOINT」。
fileName
現在のレコードが存在するbinlogファイル名。
position
現在のレコードのbinlog内での終了オフセットで、形式はEnd_log_pos@binlogファイル番号です。例えば、現在のレコードがファイルmysql-bin.000004にあり、終了オフセットが2196の場合、その値は「2196@4」です。
safePosition
現在のトランザクションがbinlog内で開始するオフセットで、形式は上記と同じです。
timestamp
binlogに書き込まれた時間、unixタイムスタンプ、秒単位。
gtid
現在のgtid、例:c7c98333-6006-11ed-bfc9-b8cef6e1a231:9。
transactionId
トランザクションID。commitイベントのみがトランザクションIDを生成します。
serverId
ソースデータベースのserverId。ソースデータベースのserver_idを確認するには、SHOW VARIABLES LIKE 'server_id'を参照してください。
threadId
現在のトランザクションをコミットしたセッションのID。SHOW processlist;を参照してください。
sourceType
ソースデータベースのデータベースタイプ。現在のバージョンではMySQLのみです。
sourceVersion
ソースデータベースのバージョン。ソースデータベースのバージョンを確認するには、 select version();を参照してください。
schemaName
データベース名。
tableName
テーブル名。
objectName
形式:データベース名.テーブル名。
columns
テーブル内の各列の定義。
oldColumns
DML実行前の該当行のデータです。insertメッセージの場合、この配列はnullです。配列内の要素には12種類のタイプがあります:Integer、Character、Decimal、Float、Timestamp、DateTime、TimestampWithTimeZone、BinaryGeometry、TextGeometry、BinaryObject、TextObject、EmptyObject。詳細はdemoの定義を参照してください。
newColumns
DML実行後の該当行のデータです。deleteメッセージの場合、この配列はnullです。配列内の要素には12種類のタイプがあります:Integer、Character、Decimal、Float、Timestamp、DateTime、TimestampWithTimeZone、BinaryGeometry、TextGeometry、BinaryObject、TextObject、EmptyObject。詳細はdemoの定義を参照してください。
sql
DDLのSQL文。
executionTime
DDLの実行時間。単位は秒です。
heartbeatTimestamp
ハートビートメッセージのタイムスタンプ。秒単位です。heartbeatメッセージにのみこのフィールドがあります。
syncedGtid
DTSが解析済みのGTIDセット。形式は例:c7c98333-6006-11ed-bfc9-b8cef6e1a231:1-13。
fakeGtid
これは作成された偽のGTIDかどうかを示します。gtid_modeがオフの場合、DTSはGTIDを作成します。
pkNames
ソースデータベースのテーブルにPKが設定されている場合、DMLメッセージにこのパラメータが含まれます。設定されていない場合は含まれません。
readerTimestamp
DTSがこのデータを処理した時間。unixタイムスタンプで、単位はミリ秒です。
tags
QueryEvent内のstatus_varsです。詳細はQueryEventを参照してください。
total
メッセージがシャード化されている場合、シャードの総数を記録します。現在のバージョン(version=1)では意味がなく、拡張用に予約されています。
index
メッセージがシャード化されている場合、現在のシャードのインデックスを記録します。現在のバージョン(version=1)では意味がなく、拡張用に予約されています。
Record内で列属性を記述するフィールドは「Field」であり、以下の4つの属性が含まれます:
name:列名です。
dataTypeNumber:binlogに記録されるデータ型です。値の詳細はMySQLを参照してください。
isKey:PKかどうかを示します。
originalType:DDLで定義されたタイプです。

データベースフィールドマッピング関係

以下は、データベース(MySQLなど)のフィールドタイプとAvroプロトコルで定義されたデータタイプとの間のマッピング関係です。
MySQL タイプ
対応するAvroの型
MYSQL_TYPE_NULL
EmptyObject
MYSQL_TYPE_INT8
Integer
MYSQL_TYPE_INT16
Integer
MYSQL_TYPE_INT24
Integer
MYSQL_TYPE_INT32
Integer
MYSQL_TYPE_INT64
Integer
MYSQL_TYPE_BIT
Integer
MYSQL_TYPE_YEAR
DateTime
MYSQL_TYPE_FLOAT
Float
MYSQL_TYPE_DOUBLE
Float
MYSQL_TYPE_VARCHAR
Character
MYSQL_TYPE_STRING
Character、元のタイプがbinaryの場合、BinaryObjectに対応します。
MYSQL_TYPE_VAR_STRING
Character、元のタイプがvarbinaryの場合、BinaryObjectに対応します。
MYSQL_TYPE_TIMESTAMP
Timestamp
MYSQL_TYPE_DATE
DateTime
MYSQL_TYPE_TIME
DateTime
MYSQL_TYPE_DATETIME
DateTime
MYSQL_TYPE_TIMESTAMP_NEW
Timestamp
MYSQL_TYPE_DATE_NEW
DateTime
MYSQL_TYPE_TIME_NEW
DateTime
MYSQL_TYPE_DATETIME_NEW
DateTime
MYSQL_TYPE_ENUM
TextObject
MYSQL_TYPE_SET
TextObject
MYSQL_TYPE_DECIMAL
Decimal
MYSQL_TYPE_DECIMAL_NEW
Decimal
MYSQL_TYPE_JSON
TextObject
MYSQL_TYPE_BLOB
BinaryObject
MYSQL_TYPE_TINY_BLOB
BinaryObject
MYSQL_TYPE_MEDIUM_BLOB
BinaryObject
MYSQL_TYPE_LONG_BLOB
BinaryObject
MYSQL_TYPE_GEOMETRY
BinaryObject


ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック