DataWorksデータ統合は、Alibaba Cloud ApsaraDB for Lindormが提供するLindorm時系列データベース(TSDB)にデータポイントを書き込むためのTSDB Writerを提供します。このトピックでは、TSDBデータソースへのデータ同期機能について説明します。
サポートされているTSDBバージョン
TSDB Writerは、ApsaraDB for LindormのすべてのバージョンとHiTSDB V2.4.X以降をサポートしています。
制限事項
TSDB Writerは、データ統合専用の排他リソースグループのみをサポートしています。
TSDB Writerは、コードエディターを使用してのみ構成できます。
仕組み
TSDB Writerは、TSDBクライアントhitsdb-clientを使用してTSDBインスタンスに接続し、HTTP APIエンドポイントを使用してデータポイントを書き込みます。詳細については、「TSDB SDKドキュメント」をご参照ください。
データ型マッピング
sourceDbTypeパラメーターがTSDBに設定されている場合、ソースデータはTSDB ReaderまたはOpenTSDB Readerを使用して読み取られます。この場合、TSDB Writerは、ソースデータをJSON文字列の形式でLindorm TSDBに書き込みます。 sourceDbTypeパラメーターがRDBに設定されている場合、ソースはリレーショナルデータベースです。この場合、TSDB Writerは、リレーショナルデータベースのレコードに基づいてソースデータを解析します。次の表に、sourceDbTypeパラメーターがRDBに設定されている場合のcolumnTypeパラメーターの有効な値と、列の型に一致するデータ型を示します。
データモデル | columnTypeの有効な値 | データ型 |
タグ | tag | 文字列データ型。タグは、データソースの機能を記述します。ほとんどの場合、タグは時間の経過とともに変化しません。 |
タイムスタンプ | timestamp | TIMESTAMPデータ型。タイムスタンプは、データが生成された時点を指定します。タイムスタンプは、データの書き込み時に手動で指定することも、システムによって自動的に生成することもできます。 |
フィールド | field_string | 文字列データ型。フィールドは、データソースの測定メトリックを記述します。ほとんどの場合、フィールドは時間の経過とともに変化します。 |
field_double | 数値データ型。フィールドは、データソースの測定メトリックを記述します。ほとんどの場合、フィールドは時間の経過とともに変化します。 | |
field_boolean | ブールデータ型。フィールドは、データソースの測定メトリックを記述します。ほとんどの場合、フィールドは時間の経過とともに変化します。 |
データ同期タスクの開発
構成手順については、「コードエディターを使用したバッチ同期タスクの構成」をご参照ください。
コードエディターを使用してバッチ同期タスクを構成する場合に構成されるすべてのパラメーターと実行されるコードについては、「付録:コードとパラメーター」をご参照ください。
付録:コードとパラメーター
付録:コードエディターを使用したバッチ同期タスクの構成
コードエディターを使用してバッチ同期タスクを構成する場合は、コードエディターの形式要件に基づいて、関連データソースのリーダーとライターのパラメーターを構成する必要があります。形式要件の詳細については、「コードエディターを使用したバッチ同期タスクの構成」をご参照ください。以下の情報は、コードエディターのリーダーとライターのパラメーターの構成の詳細について説明しています。
TSDB Writerのコード
次のデフォルト構成を使用して、RDBからTSDBにデータを書き込みます(推奨)
{ "type": "job", "version": "2.0", "steps": [ { "stepType": "stream",// ストリームプラグインを特定の RDB プラグインに置き換えることができます。RDB データベースには、MySQL、Oracle、PostgreSQL、DRDS データベースが含まれます。 "parameter": {}, "name": "Reader", "category": "reader" }, { "stepType": "tsdb", "parameter": { "endpoint": "http://localhost:8242", "username": "xxx", "password": "xxx", "sourceDbType": "RDB", "batchSize": 256, "columnType": [ "tag", "tag", "field_string", "field_double", "timestamp", "field_bool" ], "column": [ "tag1", "tag2", "field1", "field2", "timestamp", "field3" ], "multiField": "true", "table": "testmetric", "ignoreWriteError": "false", "database": "default" }, "name": "Writer", "category": "writer" } ], "setting": { "errorLimit": { "record": "0" }, "speed": { "throttle":true,// スロットリングを有効にするかどうかを指定します。値 false はスロットリングが無効になっていることを示し、値 true はスロットリングが有効になっていることを示します。 mbps パラメーターは、throttle パラメーターが true に設定されている場合にのみ有効になります。 "concurrent":1, // 並列スレッドの最大数。 "mbps":"12"// 最大伝送速度。単位: MB/s。 } }, "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] } }OpenTSDBプロトコルをサポートするデータベースからTSDBにデータを書き込みます
{ "type": "job", "version": "2.0", "steps": [ { "stepType": "opentsdb", "parameter": { "endpoint": "http://localhost:4242", "column": [ "m1", "m2", "m3", "m4", "m5", "m6" ], "startTime": "2019-01-01 00:00:00", "endTime": "2019-01-01 03:00:00" }, "name": "Reader", "category": "reader" }, { "stepType": "tsdb", "parameter": { "endpoint": "http://localhost:8242" }, "name": "Writer", "category": "writer" } ], "setting": { "errorLimit": { "record": "0" }, "speed": { "throttle":true,// スロットリングを有効にするかどうかを指定します。値 false はスロットリングが無効になっていることを示し、値 true はスロットリングが有効になっていることを示します。 mbps パラメーターは、throttle パラメーターが true に設定されている場合にのみ有効になります。 "concurrent":1, // 並列スレッドの最大数。 "mbps":"12"// 最大伝送速度。単位: MB/s。 } }, "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] } }OpenTSDBプロトコルを使用して、単変量データポイントをTSDBに書き込みます(推奨しません)
{ "type": "job", "version": "2.0", "steps": [ { "stepType": "stream",// ストリームプラグインを特定の RDB プラグインに置き換えることができます。RDB データベースには、MySQL、Oracle、PostgreSQL、DRDS データベースが含まれます。 "parameter": {}, "name": "Reader", "category": "reader" }, { "stepType": "tsdb", "parameter": { "endpoint": "http://localhost:8242", "username": "xxx", "password": "xxx", "sourceDbType": "RDB", "batchSize": 256, "columnType": [ "tag", "tag", "field_string", "field_double", "timestamp", "field_boolean" ], "column": [ "tag1", "tag2", "field_metric_1", "field_metric_2", "timestamp", "field_metric_3" ], "ignoreWriteError": "false" }, "name": "Writer", "category": "writer" } ], "setting": { "errorLimit": { "record": "0" }, "speed": { "throttle":true,// スロットリングを有効にするかどうかを指定します。値 false はスロットリングが無効になっていることを示し、値 true はスロットリングが有効になっていることを示します。 mbps パラメーターは、throttle パラメーターが true に設定されている場合にのみ有効になります。 "concurrent":1, // 並列スレッドの最大数。 "mbps":"12"// 最大伝送速度。単位: MB/s。 } }, "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] } }説明TSDBメトリックの名前は、columnパラメーターのフィールドの列名によって決まります。上記のコードでは、リレーショナルデータベースのデータの1行が、field_metric_1、field_metric_2、field_metric_3の3つのメトリックに書き込まれます。
TSDB Writerのコードのパラメーター
パラメータータイプ | パラメーター | 説明 | 必須 | デフォルト値 |
共通パラメーター | sourceDbType | ソースデータベースのタイプ。 | いいえ | TSDB 説明 有効な値:TSDBとRDB。値TSDBは、ソースデータベースがOpenTSDB、Prometheus、またはTimescaleデータベースであることを示します。値RDBは、ソースデータベースがMySQL、Oracle、PostgreSQL、またはDRDSデータベースなどのリレーショナルデータベースであることを示します。 |
endpoint | 宛先TSDBデータベースのHTTP URL。 http://IPアドレス:ポート番号の形式でエンドポイントを指定します。 ApsaraDB for LindormコンソールでHTTPエンドポイントを取得できます。 | はい | デフォルト値なし | |
database | データを書き込むTSDBデータベースの名前。 | いいえ | default 説明 最初にデータベースを作成する必要があります。 | |
username | TSDBデータベースのユーザー名。 TSDBデータベースの認証を構成する場合は、このパラメーターの値を指定する必要があります。 | いいえ | デフォルト値なし | |
batchSize | 一度に書き込むデータレコードの数。このパラメーターの値はINT型で、0より大きい必要があります。 batchSizeパラメーターに大きな値を構成する場合は、より多くのメモリ領域を予約する必要があります。 | いいえ | 100 | |
TSDBのパラメーター | maxRetryTime | 障害発生後に許可される最大再試行回数。このパラメーターの値はINT型で、1より大きい必要があります。 | いいえ | 3 |
ignoreWriteError | 書き込みエラーを無視するかどうかを指定します。このパラメーターの値はBOOLEAN型です。このパラメーターをtrueに設定すると、書き込みエラーが発生した後もTSDB Writerは書き込み操作を続行します。指定された再試行回数後に書き込み操作が失敗した場合、同期タスクは終了します。 | いいえ | false | |
RDBのパラメーター | table | TSDBにインポートするメトリックの名前。 multiFieldパラメーターがfalseに設定されている場合、このパラメーターは空のままにすることができます。この場合、columnパラメーターのメトリックの名前を指定する必要があります。 multiFieldパラメーターがtrueに設定されている場合は、このパラメーターを構成する必要があります。 | いいえ | デフォルト値なし |
multiField | HTTP APIエンドポイントを使用して多変量データポイントをTSDBに書き込むかどうかを指定します。 説明 Lindorm TSDBのネイティブSQL機能を使用して、HTTP APIエンドポイントによって書き込まれたデータにアクセスするには、TSDBにテーブルを作成する必要があります。そうでない場合、TSDB HTTP APIエンドポイントを使用してのみ多変量データポイントをクエリできます。詳細については、「多変量データポイントのクエリ」をご参照ください。 | はい | false 説明 多変量データポイントをTSDBに書き込むには、値をtrueに設定する必要があります。 | |
column | データをTSDBデータベースに書き込む列の名前。 | はい | デフォルト値なし 説明 リーダーに指定された列と同じ順序で列を指定する必要があります。 | |
columnType | リレーショナルデータベースの列のデータ型。次のタイプがサポートされています。
| はい | デフォルト値なし 説明 リーダーに指定された列と同じ順序で列を指定する必要があります。 | |
batchSize | 一度に書き込むデータレコードの数。このパラメーターの値はINT型で、0より大きい必要があります。 | いいえ | 100 |
パフォーマンステストレポート
テストデータの特性
メトリック:メトリック、m。
tag_kとtag_v:タグのキーと値。最初の4つのタグのキーと値は、2,000,000データポイントの時系列を構成します。データポイントの数は、次の式を使用して計算されます。
10 (zones) × 20 (clusters) × 100 (groups) × 100 (applications)。 ipタグは、2,000,000データポイントのインデックスに対応し、1から始まります。tag_k
tag_v
zone
z1~z10
cluster
c1~c20
group
g1~g100
app
a1~a100
ip
ip1~ip2,000,000
value:1から100までのランダムな値。
interval:10秒のコレクション間隔。データ収集の合計期間は3時間で、合計2,160,000,000データポイントが収集されます。データポイントの数は、次の式を使用して計算されます。
3 × 60 × 60/10 × 2,000,000。
パフォーマンステスト結果
チャネル数
データ統合速度(レコード/秒)
データ統合帯域幅(Mbit/秒)
1
129,753
15.45
2
284,953
33.70
3
385,868
45.71