ApsaraDB for Lindorm が提供する Lindorm Streams は、ApsaraDB for HBase Performance-enhanced の増分データを Message Queue for Apache Kafka のトピックに公開します。これらのトピックをサブスクライブすることで、ダウンストリームシステムが行単位の変更をリアルタイムで消費できます。
Lindorm Streams では、以下の機能がサポートされています:
仕組み
Lindorm Streams は、各行に対する操作を 1 つのメッセージとして Kafka トピックに公開します。各メッセージには、対象行の 2 つのバージョン(操作前の状態と操作後の状態)を含めることができます。
配信セマンティクス
注文保証
同一行に対する操作は、発生した順序で公開されるため、コンシューマーは同一のシーケンスでそれらを再生できます。
最低 1 回の配信(at-least-once)
Lindorm Streams は最低 1 回の配信を保証します。ただし、設定されたリトライポリシーにより、同一メッセージが複数回配信される場合があります。そのため、コンシューマー側では重複メッセージを適切に処理できるように設計してください。
1 回限りのセマンティクス(exactly-once)を利用する場合は、「チケットを送信」してください。
メッセージフォーマット
各メッセージは、以下の構造を持つ JSON オブジェクトです:
{
"op": "<opType>",
"table": "<tableName>",
"ts": "<defaultVersion>",
"keyOnly": "<keyOnly>",
"data": [
{
"type": "<type>",
"name": "<name>",
"ts": "<version>",
"value": "<value>"
}
]
}以下の表では、最上位レベルのフィールドについて説明します。
| フィールド | 説明 |
|---|---|
op | 操作の種類です。有効な値: Put および DeleteFamily。 |
table | テーブル名です。 |
ts | デフォルトバージョンです。行に ts キーが含まれていない場合に使用されます。 |
keyOnly | メッセージにプライマリキーのみを含めるかどうかを示します。 |
data | カラムエントリの配列です。各エントリには、以下に記載するフィールドが含まれます。 |
以下の表では、各 data エントリ内のフィールドについて説明します。
| フィールド | 説明 |
|---|---|
type | カラムのデータの型です。 |
name | カラム名です。 |
ts | データのバージョンです。空欄の場合、dts の値がバージョンとして使用されます。 |
value | カラムの値です。空欄の場合、テーブル内の実際の値は null です。 |
メッセージパラメーター
以下のパラメーターを使用して、各メッセージに含めるデータを制御できます。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
key_only | boolean | いいえ | false | プライマリキーのみを同期するかどうかを指定します。 |
unique_key | boolean | いいえ | false | バッチごとにプライマリキーを 1 度だけ送信するかどうかを指定します。 |