DataWorks Data Integration menyediakan TSDB Writer untuk menulis titik data ke Lindorm Time Series Database (TSDB) yang disediakan oleh Alibaba Cloud ApsaraDB for Lindorm. Topik ini menjelaskan kemampuan sinkronisasi data ke sumber data TSDB.
Versi TSDB yang didukung
TSDB Writer mendukung semua versi ApsaraDB for Lindorm dan HiTSDB V2.4.X atau yang lebih baru.
Batasan
TSDB Writer hanya mendukung grup sumber daya eksklusif untuk Data Integration.
Anda hanya dapat mengonfigurasi TSDB Writer menggunakan editor kode.
Cara kerjanya
TSDB Writer terhubung ke instance TSDB menggunakan klien TSDB hitsdb-client dan menulis titik data melalui Titik akhir API HTTP. Untuk informasi lebih lanjut, lihat Dokumentasi SDK TSDB.
Pemetaan tipe data
Jika parameter sourceDbType diatur ke TSDB, data sumber dibaca menggunakan TSDB Reader atau OpenTSDB Reader. Dalam hal ini, TSDB Writer menulis data sumber ke Lindorm TSDB dalam format string JSON. Jika parameter sourceDbType diatur ke RDB, sumbernya adalah database relasional. Dalam hal ini, TSDB Writer mengurai data sumber berdasarkan catatan dari database relasional. Tabel berikut mencantumkan nilai valid dari parameter columnType dan tipe data yang sesuai dengan jenis kolom ketika parameter sourceDbType diatur ke RDB.
Model data | Nilai valid columnType | Tipe data |
Tag | tag | Tipe data string. Tag menggambarkan fitur dari sumber data. Dalam sebagian besar kasus, tag tidak berubah seiring waktu. |
Timestamp | timestamp | Tipe data TIMESTAMP. Timestamp menentukan titik waktu saat data dihasilkan. Timestamp dapat ditentukan secara manual saat penulisan data atau dihasilkan otomatis oleh sistem. |
Field | field_string | Tipe data string. Field menggambarkan metrik pengukuran dari sumber data. Dalam sebagian besar kasus, field berubah seiring waktu. |
field_double | Tipe data numerik. Field menggambarkan metrik pengukuran dari sumber data. Dalam sebagian besar kasus, field berubah seiring waktu. | |
field_boolean | Tipe data Boolean. Field menggambarkan metrik pengukuran dari sumber data. Dalam sebagian besar kasus, field berubah seiring waktu. |
Mengembangkan tugas sinkronisasi data
Untuk informasi tentang prosedur konfigurasi, lihat Mengonfigurasi Tugas Sinkronisasi Batch Menggunakan Editor Kode.
Untuk informasi tentang semua parameter yang dikonfigurasi dan kode yang dijalankan saat menggunakan editor kode untuk mengonfigurasi tugas sinkronisasi batch, lihat Lampiran: Kode dan Parameter.
Lampiran: Kode dan parameter
Lampiran: Mengonfigurasi tugas sinkronisasi batch menggunakan editor kode
Kode untuk TSDB Writer
Menulis data dari RDB ke TSDB menggunakan konfigurasi default berikut (direkomendasikan)
{ "type": "job", "version": "2.0", "steps": [ { "stepType": "stream",// Anda dapat mengganti plugin stream dengan plugin RDB tertentu. Basis data RDB termasuk basis data MySQL, Oracle, PostgreSQL, dan 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,// Menentukan apakah akan mengaktifkan pembatasan laju. Nilai false menunjukkan bahwa pembatasan laju dinonaktifkan, dan nilai true menunjukkan bahwa pembatasan laju diaktifkan. Parameter mbps hanya berlaku jika parameter throttle diatur ke true. "concurrent":1, // Jumlah maksimum thread paralel. "mbps":"12"// Laju transmisi maksimum. Unit: MB/s. } }, "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] } }Menulis data dari basis data yang mendukung protokol OpenTSDB ke 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,// Menentukan apakah akan mengaktifkan pembatasan laju. Nilai false menunjukkan bahwa pembatasan laju dinonaktifkan, dan nilai true menunjukkan bahwa pembatasan laju diaktifkan. Parameter mbps hanya berlaku jika parameter throttle diatur ke true. "concurrent":1, // Jumlah maksimum thread paralel. "mbps":"12"// Laju transmisi maksimum. Unit: MB/s. } }, "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] } }Menggunakan protokol OpenTSDB untuk menulis titik data univariat ke TSDB (tidak direkomendasikan)
{ "type": "job", "version": "2.0", "steps": [ { "stepType": "stream",// Anda dapat mengganti plugin stream dengan plugin RDB tertentu. Basis data RDB termasuk basis data MySQL, Oracle, PostgreSQL, dan 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,// Menentukan apakah akan mengaktifkan pembatasan laju. Nilai false menunjukkan bahwa pembatasan laju dinonaktifkan, dan nilai true menunjukkan bahwa pembatasan laju diaktifkan. Parameter mbps hanya berlaku jika parameter throttle diatur ke true. "concurrent":1, // Jumlah maksimum thread paralel. "mbps":"12"// Laju transmisi maksimum. Unit: MB/s. } }, "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] } }CatatanNama metrik TSDB ditentukan oleh nama kolom field untuk parameter kolom. Dalam kode sebelumnya, satu baris data dalam basis data relasional ditulis ke tiga metrik: field_metric_1, field_metric_2, dan field_metric_3.
Parameter dalam kode untuk TSDB Writer
Tipe parameter | Parameter | Deskripsi | Diperlukan | Nilai default |
Parameter umum | sourceDbType | Tipe basis data sumber. | Tidak | TSDB Catatan Nilai valid: TSDB dan RDB. Nilai TSDB menunjukkan bahwa basis data sumber adalah OpenTSDB, Prometheus, atau Timescale. Nilai RDB menunjukkan bahwa basis data sumber adalah basis data relasional, seperti basis data MySQL, Oracle, PostgreSQL, atau DRDS. |
endpoint | URL HTTP dari basis data TSDB tujuan. Tentukan endpoint dalam format http://Alamat IP:Nomor port. Anda dapat memperoleh endpoint HTTP di konsol ApsaraDB for Lindorm. | Ya | Tidak ada nilai default | |
database | Nama basis data TSDB tempat data ditulis. | Tidak | default Catatan Anda harus membuat basis data terlebih dahulu. | |
username | Nama pengguna basis data TSDB. Anda harus menentukan nilai untuk parameter ini jika Anda mengonfigurasi autentikasi untuk basis data TSDB. | Tidak | Tidak ada nilai default | |
batchSize | Jumlah catatan data yang ditulis sekaligus. Nilai parameter ini bertipe INT dan harus lebih besar dari 0. Jika Anda ingin mengonfigurasi nilai besar untuk parameter batchSize, Anda harus menyediakan lebih banyak ruang memori. | Tidak | 100 | |
Parameter untuk TSDB | maxRetryTime | Jumlah maksimum percobaan ulang setelah kegagalan. Nilai parameter ini bertipe INT dan harus lebih besar dari 1. | Tidak | 3 |
ignoreWriteError | Menentukan apakah akan mengabaikan kesalahan penulisan. Nilai parameter ini bertipe BOOLEAN. Jika Anda mengatur parameter ini ke true, TSDB Writer melanjutkan operasi penulisan setelah terjadi kesalahan penulisan. Jika operasi penulisan gagal setelah jumlah percobaan ulang yang ditentukan, tugas sinkronisasi dihentikan. | Tidak | false | |
Parameter untuk RDB | table | Nama metrik yang ingin Anda impor ke TSDB. Jika parameter multiField diatur ke false, Anda dapat meninggalkan parameter ini kosong. Dalam hal ini, Anda perlu menentukan nama metrik untuk parameter kolom. Jika multiField diatur ke true, Anda harus mengonfigurasi parameter ini. | Tidak | Tidak ada nilai default |
multiField | Menentukan apakah akan menulis titik data multivariat ke TSDB menggunakan Titik akhir API HTTP. Catatan Jika Anda ingin menggunakan kemampuan SQL asli Lindorm TSDB untuk mengakses data yang ditulis menggunakan Titik akhir API HTTP, Anda harus membuat tabel di TSDB. Jika tidak, Anda hanya dapat menanyakan titik data multivariat menggunakan Titik akhir API HTTP TSDB. Untuk informasi lebih lanjut, lihat Menanyakan titik data multivariat. | Ya | false Catatan Untuk menulis titik data multivariat ke TSDB, Anda harus mengatur nilainya menjadi true. | |
column | Nama kolom yang datanya ingin Anda tulis ke basis data TSDB. | Ya | Tidak ada nilai default Catatan Anda harus menentukan kolom dalam urutan yang sama dengan kolom yang ditentukan untuk pembaca. | |
columnType | Tipe data kolom dalam basis data relasional. Jenis berikut didukung:
| Ya | Tidak ada nilai default Catatan Anda harus menentukan kolom dalam urutan yang sama dengan kolom yang ditentukan untuk pembaca. | |
batchSize | Jumlah catatan data yang ditulis sekaligus. Nilai parameter ini bertipe INT dan harus lebih besar dari 0. | Tidak | 100 |
Laporan uji kinerja
Karakteristik Data Uji
Metric: sebuah metrik, yaitu m.
tag_k dan tag_v: kunci dan nilai tag. Kunci dan nilai dari empat tag pertama membentuk deret waktu dari 2.000.000 titik data. Jumlah titik data dihitung menggunakan rumus berikut:
10 (zones) × 20 (clusters) × 100 (groups) × 100 (applications). Tag ip sesuai dengan indeks dari 2.000.000 titik data, dimulai dari 1.tag_k
tag_v
zone
z1 hingga z10
cluster
c1 hingga c20
group
g1 hingga g100
app
a1 hingga a100
ip
ip1 hingga ip2.000.000
value: nilai acak dari 1 hingga 100.
interval: interval pengumpulan 10 detik. Durasi total pengumpulan data adalah 3 jam, dan total jumlah titik data yang dikumpulkan adalah 2.160.000.000. Jumlah titik data dihitung menggunakan rumus berikut:
3 × 60 × 60/10 × 2.000.000.
Hasil Uji Kinerja
Jumlah saluran
Kecepatan integrasi data (catatan/detik)
Bandwidth integrasi data (Mbit/detik)
1
129.753
15,45
2
284.953
33,70
3
385.868
45,71