DataWorks Data Integration memungkinkan Anda menggunakan TSDB Writer untuk menulis titik data ke database Alibaba Cloud Lindorm TSDB. Topik ini menjelaskan kemampuan penulisan data TSDB Writer.
Versi yang didukung
TSDB Writer mendukung semua versi Lindorm TSDB dan HiTSDB 2.4.x atau yang lebih baru. Kompatibilitas dengan versi lain tidak dijamin.
Batasan
TSDB Writer mendukung Serverless resource groups (Direkomendasikan) dan exclusive resource groups for Data Integration.
TSDB Writer hanya mendukung konfigurasi task melalui code editor.
Cara kerja
Plugin TSDB Writer terhubung ke instans TSDB menggunakan client TSDB (hitsdb-client) dan menulis titik data melalui HTTP API. Untuk informasi lebih lanjut mengenai write API, lihat SDK Reference.
Tipe bidang yang didukung
Jika sourceDbType diatur ke TSDB, yang berarti sumber datanya adalah TSDB Reader atau OpenTSDB Reader, plugin akan langsung menulis data sumber sebagai string JSON. Jika sourceDbType diatur ke RDB, yang berarti sumber datanya adalah database relasional, plugin akan mengurai data tersebut sebagai catatan dari database relasional. Bagian berikut menjelaskan pengaturan columnType dan tipe data yang dapat ditulis ke column yang sesuai ketika sourceDbType diatur ke RDB.
Model data | Pengaturan columnType | Tipe data |
Data tag | tag | String. Tag menggambarkan fitur dari sumber data dan biasanya tidak berubah seiring waktu. |
Waktu pembuatan data | timestamp | Timestamp. Timestamp merepresentasikan waktu saat data dibuat. Anda dapat menentukannya selama operasi penulisan, atau sistem dapat menghasilkannya secara otomatis. |
Konten data | field_string | Nilai bidang ini berupa string. Bidang menggambarkan metrik terukur dari sumber data dan biasanya berubah seiring waktu. |
field_double | Nilai bidang ini berupa tipe numerik. Bidang menggambarkan metrik terukur dari sumber data dan biasanya berubah seiring waktu. | |
field_boolean | Nilai bidang ini berupa tipe Boolean. Bidang menggambarkan metrik terukur dari sumber data dan biasanya berubah seiring waktu. |
Kembangkan task sinkronisasi data
Untuk informasi mengenai titik masuk dan prosedur konfigurasi task sinkronisasi, lihat panduan konfigurasi berikut.
Untuk petunjuknya, lihat Configure a task in the code editor.
Untuk semua parameter dan contoh skrip konfigurasi di code editor, lihat Appendix: Script demo and parameter descriptions.
Lampiran: Contoh skrip dan deskripsi parameter
Konfigurasikan task sinkronisasi batch menggunakan code editor
Jika Anda ingin mengonfigurasi task sinkronisasi batch menggunakan code editor, Anda harus mengonfigurasi parameter terkait dalam skrip berdasarkan persyaratan format skrip terpadu. Untuk informasi lebih lanjut, lihat Configure a task in the code editor. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi task sinkronisasi batch menggunakan code editor.
Contoh skrip Writer
Konfigurasi default untuk RDB ke TSDB (Direkomendasikan)
{ "type": "job", "version": "2.0", "steps": [ { "stepType": "stream",// Anda dapat mengganti plugin stream dengan JSON plugin tipe RDB tertentu. Database tipe RDB mencakup 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,// Jika throttle diatur ke false, parameter mbps diabaikan dan throttling dinonaktifkan. Jika throttle diatur ke true, throttling diaktifkan. "concurrent":1, // Jumlah job konkuren. "mbps":"12"// Throttling. Di sini, 1 mbps = 1 MB/s. } }, "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] } }Sinkronkan data dari database 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,// Jika throttle diatur ke false, parameter mbps diabaikan dan throttling dinonaktifkan. Jika throttle diatur ke true, throttling diaktifkan. "concurrent":1, // Jumlah job konkuren. "mbps":"12"// Throttling. Di sini, 1 mbps = 1 MB/s. } }, "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] } }Tulis ke TSDB menggunakan protokol OpenTSDB (single-value) (Tidak direkomendasikan):
{ "type": "job", "version": "2.0", "steps": [ { "stepType": "stream",// Anda dapat mengganti plugin stream dengan JSON plugin tipe RDB tertentu. Database tipe RDB mencakup 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,// Jika throttle diatur ke false, parameter mbps diabaikan dan throttling dinonaktifkan. Jika throttle diatur ke true, throttling diaktifkan. "concurrent":1, // Jumlah job konkuren. "mbps":"12"// Throttling. Di sini, 1 mbps = 1 MB/s. } }, "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] } }CatatanNama tabel TSDB tujuan (metric) diturunkan dari nama kolom yang sesuai dengan field dalam column. Berdasarkan konfigurasi di atas, satu baris data relasional ditulis ke tiga metric: field_metric_1, field_metric_2, dan field_metric_3.
Parameter skrip Writer
Sumber data | Parameter | Deskripsi | Wajib | Nilai default |
Parameter umum | sourceDbType | Tipe sumber data. | Tidak | TSDB Catatan Nilai yang valid adalah `TSDB` dan `RDB`. `TSDB` mencakup OpenTSDB, Prometheus, dan TimeScale. `RDB` mencakup MySQL, Oracle, PostgreSQL, dan DRDS. |
endpoint | Titik akhir HTTP dari instans TSDB. Masuk ke konsol produk untuk mendapatkan endpoint tersebut. | Ya. Formatnya adalah http://IP:Port. | Tidak ada | |
database | Nama database TSDB tempat mengimpor data. | Tidak | default Catatan Anda harus membuat database di TSDB terlebih dahulu. | |
username | Username untuk database TSDB. Ini diperlukan jika autentikasi diaktifkan untuk TSDB. | Tidak | Tidak ada | |
batchSize | Jumlah entri data yang ditulis dalam setiap batch. Nilai `batchSize` yang besar memerlukan lebih banyak memori untuk task tersebut. | Tidak. Tipe datanya adalah INT. Nilainya harus lebih besar dari 0. | 100 | |
Sumber adalah TSDB | maxRetryTime | Jumlah percobaan ulang setelah kegagalan. | Tidak. Tipe datanya adalah INT. Nilainya harus lebih besar dari 1. | 3 |
ignoreWriteError | Jika parameter ini diatur ke true, error penulisan diabaikan dan operasi penulisan dilanjutkan. Jika operasi penulisan gagal setelah jumlah percobaan ulang yang ditentukan, task sinkronisasi dihentikan. | Tidak. Tipe datanya adalah BOOL. | false | |
Sumber adalah RDB | table | Nama tabel (metric) yang ingin Anda impor ke TSDB. Jika multiField diatur ke `false`, Anda tidak perlu menentukan parameter ini. Sebagai gantinya, tentukan metric yang sesuai di bidang `column`. | Wajib jika multiField bernilai true. | Tidak ada |
multiField | Anda dapat menggunakan HTTP API untuk menulis beberapa nilai (fields) ke TSDB. Catatan Jika Anda menggunakan kemampuan SQL native Lindorm TSDB untuk mengakses data yang ditulis melalui HTTP API, Anda harus membuat tabel terlebih dahulu di TSDB. Jika tidak, Anda hanya dapat mengkueri data tersebut menggunakan TSDB HTTP API. Untuk informasi lebih lanjut, lihat Query multi-value data. | Wajib. | false Catatan Untuk versi TSDB saat ini, nilai ini harus diatur ke `true` untuk penulisan multi-nilai. | |
column | Nama bidang dari tabel di database relasional. | Ya | Tidak ada Catatan Urutan bidang harus sama dengan urutan bidang yang dikonfigurasi di parameter `column` plugin Reader. | |
columnType | Tipe di TSDB tempat bidang dari tabel database relasional dipetakan. Tipe yang didukung adalah sebagai berikut:
| Ya | Tidak ada Catatan Urutan bidang harus sesuai dengan urutan bidang kolom yang dikonfigurasi di plugin Reader. | |
batchSize | Jumlah entri data yang ditulis dalam setiap batch. | Tidak. Tipe datanya adalah INT. Nilainya harus lebih besar dari 0. | 100 |
Laporan kinerja
Karakteristik data uji kinerja
Metric: Metric ditentukan sebagai m.
tagkv: Permutasi empat tagkv pertama menghasilkan
10 × 20 × 100 × 100 = 2.000.000deret waktu. Alamat IP terakhir berkorespondensi dengan 2.000.000 deret waktu dan di-increment otomatis mulai dari 1.tag_k
tag_v
zone
z1~z10
cluster
c1~c20
group
g1~100
app
a1~a100
ip
ip1~ip2.000.000
value: Nilai ukuran adalah nilai acak antara 1 dan 100.
interval: Interval pengumpulan adalah 10 detik. Data diingest selama 3 jam. Total volume data adalah
3 × 60 × 60 / 10 × 2.000.000 = 2.160.000.000titik data.
Hasil uji kinerja
Jumlah saluran
Kecepatan integrasi data (catatan/detik)
Traffic integrasi data (MB/detik)
1
129.753
15,45
2
284.953
33,70
3
385.868
45,71