Protokol baris adalah format berbasis teks untuk menulis titik data ke TSDB for InfluxDB®.
Sintaks
<measurement>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>]Setiap baris merepresentasikan satu titik data dan dipisahkan oleh line feed (\n). Protokol baris sensitif terhadap spasi.
Contoh
myMeasurement,tag1=val1,tag2=val2 field1="v1",field2=1i 1465839830100400200Pada contoh ini:
myMeasurementadalah nama measurementtag1=val1,tag2=val2adalah tag setfield1="v1",field2=1iadalah field set1465839830100400200adalah stempel waktu dalam nanodetik.
Elemen
| Elemen | Wajib | Deskripsi | Tipe |
|---|---|---|---|
| measurement | Ya | Nama measurement. Hanya satu measurement per titik data. | String |
| tag set | Tidak | Semua pasangan kunci-nilai tag untuk titik data tersebut. | Kunci dan nilai harus berupa string |
| field set | Ya. Minimal satu field wajib ada. | Semua pasangan kunci-nilai field untuk titik data tersebut. | Kunci field: string. Nilai field: float, integer, string, atau Boolean |
| timestamp | Tidak. Default-nya menggunakan waktu UTC lokal server dalam nanodetik. | Timestamp dari titik data. Hanya satu timestamp per titik data. | UNIX timestamp dalam nanodetik |
Tipe data
| Tipe | Berlaku untuk | Detail |
|---|---|---|
| FLOAT | Nilai field | Bilangan titik mengambang 64-bit IEEE-754. Merupakan tipe numerik default. Contoh: 1, 1.0, 1.e+78, 1.E+78. Notasi ilmiah didukung. |
| INTEGER | Nilai field | Integer bertanda 64-bit, rentang dari -9223372036854775808 hingga 9223372036854775807. Tambahkan akhiran i pada nilai. Contoh: 1i. |
| STRING | Measurement, kunci tag, nilai tag, kunci field, nilai field | Maksimal 64 KB. |
| BOOLEAN | Nilai field | Tulis nilai TRUE sebagai t, T, true, True, atau TRUE. Tulis nilai FALSE sebagai f, F, false, False, atau FALSE. |
| TIMESTAMP | Timestamp | Timestamp UNIX dalam nanodetik. Minimum: -9223372036854775806 (1677-09-21T00:12:43.145224194Z). Maksimum: 9223372036854775806 (2262-04-11T23:47:16.854775806Z). Gunakan HTTP API untuk menulis timestamp dengan presisi lain. |
Sintaks penulisan nilai Boolean berbeda dengan sintaks saat mengkuerinya. Untuk informasi lebih lanjut, lihat FAQ.
Tipe nilai field harus konsisten dalam satu shard, tetapi dapat berbeda antar shard. Mengenai bagaimana konflik tipe memengaruhi kueri SELECT *, lihat FAQ.Contoh tipe data
Tuliskan 1.0 sebagai float
> INSERT mymeas value=1Menulis 1 sebagai float
> INSERT mymeas value=1Literal numerik tanpa akhiran i secara bawaan merupakan tipe float.
Menulis -1.234456e+78 sebagai float
> INSERT mymeas value=-1.234456e+78Menulis 1 sebagai integer
> INSERT mymeas value=1iMenulis nilai field berupa string
> INSERT mymeas value="stringing along"Nilai field berupa string harus diapit tanda kutip ganda.
Menulis nilai field Boolean
> INSERT mymeas value=trueJangan membungkus nilai field Boolean dengan tanda kutip. Pernyataan berikut menulis true sebagai string, bukan Boolean:
> INSERT mymeas value="true"Konflik tipe dalam shard yang sama
> INSERT mymeas value=3 1465934559000000000
> INSERT mymeas value="stringing along" 1465934559000000001
ERR: {"error":"field type conflict: input field \"value\" on measurement \"mymeas\" is type string, already exists as type float"}Konflik tipe antar shard (berhasil)
> INSERT mymeas value=3 1465934559000000000
> INSERT mymeas value="stringing along" 1466625759000000000
>Ketika dua timestamp tersebut berada di shard yang berbeda, konflik tipe tidak menghasilkan error.
Tanda kutip, karakter khusus, dan panduan penamaan tambahan
Tanda kutip
| Elemen | Tanda kutip ganda (") | Tanda kutip tunggal (') |
|---|---|---|
| Timestamp | Tidak digunakan | Tidak digunakan |
| measurement, kunci tag, nilai tag, kunci field | Tidak digunakan | Tidak digunakan |
| Nilai field (STRING) | Wajib. Nilai field STRING harus diapit tanda kutip ganda. Jangan gunakan tanda kutip untuk float, integer, atau Boolean. | Tidak digunakan |
Menggunakan tanda kutip ganda atau tunggal di sekitar nama measurement, kunci tag, nilai tag, atau kunci field akan menjadikannya bagian dari nama tersebut — yang dapat mempersulit sintaks kueri. Hindari penggunaan tanda kutip pada elemen-elemen tersebut dalam data protokol baris.
Tidak valid: timestamp dalam tanda kutip ganda
> INSERT mymeas value=9 "1466625759000000000"
ERR: {"error":"unable to parse 'mymeas value=9 \"1466625759000000000\"': bad timestamp"}Membungkus timestamp dengan tanda kutip menyebabkan error bad timestamp.
Error semantik: nilai field Boolean dalam tanda kutip ganda
> INSERT mymeas value="true"
> SHOW FIELD KEYS FROM "mymeas"
name: mymeas
------------
fieldKey fieldType
value stringTSDB for InfluxDB® memperlakukan semua nilai field yang diapit tanda kutip ganda sebagai string.
Error semantik: nama measurement dalam tanda kutip ganda
> INSERT "mymeas" value=200
> SHOW MEASUREMENTS
name: measurements
------------------
name
"mymeas"
> SELECT * FROM mymeas
> SELECT * FROM "mymeas"
> SELECT * FROM "\"mymeas\""
name: "mymeas"
--------------
time value
2016-06-14T20:36:21.836131014Z 200Ketika nama measurement diapit tanda kutip ganda, tanda kutip tersebut menjadi bagian dari nama. Untuk mengkueri measurement tersebut, escape setiap tanda kutip ganda dengan backslash pada klausa FROM: "\"mymeas\"".
Karakter khusus
Escape karakter-karakter berikut dengan backslash (\):
| Elemen | Karakter yang harus di-escape |
|---|---|
| Nama Pengukuran | Koma (,), spasi ( ) |
| Kunci tag | Koma (,), tanda sama dengan (=), spasi ( ) |
| Nilai tag | Koma (,), tanda sama dengan (=), spasi ( ) |
| Kunci field | Koma (,), tanda sama dengan (=), spasi ( ) |
| Nilai field (STRING) | Tanda kutip ganda (") |
Backslash (\) tidak perlu di-escape. Karakter khusus lain yang tidak tercantum di atas juga tidak perlu di-escape.
Contoh: titik data dengan karakter khusus
> INSERT "measurement\ with\ quo⚡️es\ and\ emoji",tag\ key\ with\ sp⚡️ces=tag\,value\,with"commas" field_k\ey="string field value, only \" need be esc⚡️ped"Panduan penamaan tambahan
Komentar: Tanda pagar (
#) di awal baris menandai komentar. TSDB for InfluxDB® mengabaikan semua karakter antara#dan line feed berikutnya (\n).Sensitivitas huruf besar/kecil: Nama measurement, kunci tag, nilai tag, kunci field, dan nilai field semuanya bersifat case-sensitive.
Kata kunci InfluxQL: Hindari penggunaan kata kunci InfluxQL sebagai nama identifier. Jika digunakan sebagai identifier, kata kunci InfluxQL dapat diinterpretasikan sebagai kata kunci kueri, sehingga menyebabkan error kueri.
Kata kunci `time`:
timedapat digunakan sebagai nama continuous query, nama database, nama measurement, nama retention policy, nama subscription, atau username — tanpa tanda kutip ganda. Namun,timetidak dapat digunakan sebagai kunci field atau kunci tag. TSDB for InfluxDB® menolak permintaan penulisan seperti itu dengan error. Untuk informasi lebih lanjut, lihat FAQ.
Menulis data protokol baris
Untuk petunjuk menulis data protokol baris ke database, lihat bab Tools.
Titik data duplikat
Sebuah titik data diidentifikasi secara unik berdasarkan nama measurement, tag set, dan timestamp-nya. Jika Anda menulis titik data dengan measurement, tag set, dan timestamp yang sama dengan titik yang sudah ada:
Jika titik baru memiliki field set yang berbeda dari titik yang sudah ada, field set-nya menjadi gabungan (union) dari field set lama dan baru.
Jika terjadi konflik pada kunci field, nilai baru akan menggantikan nilai lama.
Untuk contoh dan panduan menghindari duplikasi, lihat FAQ.
Catatan penggunaan
Urutkan tag sebelum menulis: Urutkan tag berdasarkan kunci tag menggunakan urutan yang sama seperti fungsi Go
bytes.Compare. Pengurutan tag yang konsisten meningkatkan performa penulisan.Gunakan presisi timestamp yang lebih kasar: Kami menyarankan menggunakan timestamp bergranularitas kasar untuk meningkatkan performa kompresi data.
Sinkronkan jam dengan NTP: TSDB for InfluxDB® menggunakan waktu UTC lokal host untuk memberikan timestamp. Jika jam host tidak disinkronkan dengan server Network Time Protocol (NTP), data yang ditulis mungkin memiliki timestamp yang tidak akurat.
InfluxDB® adalah merek dagang terdaftar milik InfluxData, yang tidak berafiliasi dengan, dan tidak mendukung, TSDB for InfluxDB®.