すべてのプロダクト
Search
ドキュメントセンター

DataWorks:TSDBデータソース

最終更新日:Jan 11, 2025

DataWorksデータ統合は、Alibaba Cloud ApsaraDB for Lindormが提供するLindorm時系列データベース(TSDB)にデータポイントを書き込むためのTSDB Writerを提供します。このトピックでは、TSDBデータソースへのデータ同期機能について説明します。

サポートされているTSDBバージョン

TSDB Writerは、ApsaraDB for LindormのすべてのバージョンとHiTSDB V2.4.X以降をサポートしています。

制限事項

仕組み

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

リレーショナルデータベースの列のデータ型。次のタイプがサポートされています。

  • timestamp:タイムスタンプ列。

  • tag:タグ列。

  • field_string:値が文字列データ型であるメトリック列。

  • field_double:値が数値データ型であるメトリック列。

  • field_boolean:値がブールデータ型であるメトリック列。

はい

デフォルト値なし

説明

リーダーに指定された列と同じ順序で列を指定する必要があります。

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