全部产品
Search
文档中心

Time Series Database:Referensi protokol baris

更新时间:Jun 28, 2025

Protokol baris adalah format berbasis teks yang digunakan untuk menulis titik data ke Time Series Database (TSDB) untuk InfluxDB®.

Protokol baris

Sintaks

<measurement>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>]

Protokol baris menggunakan karakter baris baru \n untuk memisahkan baris. Setiap baris mewakili sebuah titik data di TSDB untuk InfluxDB®. Protokol ini sensitif terhadap spasi.

Deskripsi Sintaks

Protokol baris digunakan untuk menentukan pengukuran, set tag, set field, dan timestamp dari setiap titik data di TSDB untuk InfluxDB®.

Elemen

Diperlukan

Deskripsi

Tipe (Informasi lebih lanjut di bagian "Tipe Data")

Pengukuran

Ya.

Nama pengukuran. Di TSDB untuk InfluxDB®, hanya satu pengukuran yang dapat ditentukan untuk sebuah titik data.

Nama pengukuran harus berupa string.

Set Tag

Tidak.

Semua pasangan kunci-nilai tag untuk sebuah titik data.

Kunci tag dan nilai tag harus berupa string.

Set Field

Ya. Setidaknya satu field harus ditentukan untuk sebuah titik data.

Semua pasangan kunci-nilai field untuk sebuah titik data.

Kunci field harus berupa string. Nilai field bisa berupa angka floating-point, integer, atau nilai Boolean.

Timestamp

Tidak. Jika tidak ada timestamp yang ditentukan untuk sebuah titik data, TSDB untuk InfluxDB® menggunakan timestamp lokal server sebagai timestamp dari titik data tersebut. Timestamp lokal dalam UTC dan diukur dalam nanodetik.

Timestamp dari sebuah titik data. Di TSDB untuk InfluxDB®, sebuah titik data hanya dapat dikaitkan dengan satu timestamp.

Sebuah timestamp adalah waktu UNIX dalam nanodetik. Anda dapat menggunakan API HTTP untuk menentukan timestamp dengan presisi alternatif.

Catatan

Sebelum mengirimkan titik data ke database TSDB untuk InfluxDB®, urutkan tag berdasarkan kunci tag. Hasil pengurutan harus sesuai dengan hasil dari fungsi Go bytes.Compare. Kami merekomendasikan Anda menggunakan timestamp granular kasar untuk titik data guna meningkatkan kinerja kompresi data. Gunakan Network Time Protocol (NTP) untuk menyinkronkan waktu antar host. TSDB untuk InfluxDB® menggunakan waktu lokal host untuk memberikan timestamp pada data. Waktu lokal dalam UTC. Jika jam host tidak disinkronkan dengan NTP server, data yang ditulis oleh host ke TSDB untuk InfluxDB® mungkin mengandung timestamp yang tidak akurat.

Tipe data

Tipe data

Elemen

Deskripsi

FLOAT

nilai field

Menyimpan angka floating-point 64-bit IEEE-754. FLOAT adalah tipe data numerik default.

Contoh: 1, 1.0, 1.e+78, dan 1.E+78.

INTEGER

nilai field

Menyimpan integer bertanda 64-bit yang berkisar dari -9223372036854775808 hingga 9223372036854775807. Anda dapat menambahkan i di akhir angka untuk menentukan angka sebagai integer.

Contoh: 1i.

STRING

Pengukuran, kunci tag, nilai tag, kunci field, dan nilai field

Menyimpan string. Sebuah string tidak boleh melebihi 64 KB panjangnya.

BOOLEAN

nilai field

Menyimpan nilai TRUE atau FALSE.

  • Gunakan sintaks berikut untuk menulis nilai TRUE: [t, T, true, True, TRUE].

  • Gunakan sintaks berikut untuk menulis nilai FALSE: [f, F, false, False, FALSE].

TIMESTAMP

Timestamp

Menyimpan timestamp UNIX dalam nanodetik. Anda dapat menggunakan API HTTP untuk menentukan timestamp dengan presisi alternatif.

  • Timestamp valid minimum adalah -9223372036854775806 atau 1677-09-21T00:12:43.145224194Z.

  • Timestamp valid maksimum adalah 9223372036854775806 atau 2262-04-11T23:47:16.854775806Z.

Sintaks untuk Menulis dan Meminta Nilai Boolean

Sintaks untuk menulis nilai Boolean berbeda dari sintaks untuk meminta nilai Boolean. Untuk informasi lebih lanjut, lihat FAQ.

Perbedaan Tipe Data Nilai Field

Tipe data dari nilai untuk setiap field dalam pengukuran harus sama dalam shard, tetapi bisa berbeda di antara shard. Untuk informasi lebih lanjut tentang bagaimana perbedaan tipe data nilai field memengaruhi permintaan SELECT *, lihat FAQ.

Contoh

Contoh 1: Menulis Nilai Field 1.0 sebagai Angka Floating-Point ke TSDB untuk InfluxDB®

> INSERT mymeas value=1.0

Contoh 2: Menulis Nilai Field 1 sebagai Angka Floating-Point ke TSDB untuk InfluxDB®

> INSERT mymeas value=1

Contoh 3: Menulis Nilai Field -1.234456e+78 sebagai Angka Floating-Point ke TSDB untuk InfluxDB®

> INSERT mymeas value=-1.234456e+78

Di TSDB untuk InfluxDB®, Anda dapat menggunakan notasi ilmiah untuk menentukan nilai field.

Contoh 4: Menulis Nilai Field 1 sebagai Integer ke TSDB untuk InfluxDB®

> INSERT mymeas value=1i

Contoh 5: Menulis Nilai Field "stringing along" sebagai String ke TSDB untuk InfluxDB®

> INSERT mymeas value="stringing along"

Anda harus menggunakan tanda kutip ganda (") untuk mengapit nilai field string. Untuk informasi lebih lanjut tentang tanda kutip, lihat bagian "Tanda Kutip".

Contoh 6: Menulis Nilai Field true sebagai Nilai Boolean ke TSDB untuk InfluxDB®

> INSERT mymeas value=true

Jangan mengapit nilai field tipe BOOLEAN dalam tanda kutip ("). Pernyataan berikut menulis nilai true sebagai string ke TSDB untuk InfluxDB®:

> INSERT mymeas value="true"

Contoh 7: Mencoba Menulis String ke Field Tempat Angka Floating-Point Disimpan

Jika timestamp dari angka floating-point dan string disimpan dalam shard yang sama, hasil berikut akan dikembalikan:

> 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"}

Jika timestamp dari angka floating-point dan string disimpan dalam shard yang berbeda, hasil berikut akan dikembalikan:

> INSERT mymeas value=3 1465934559000000000
> INSERT mymeas value="stringing along" 1466625759000000000
>

Tanda kutip, karakter khusus, dan panduan penamaan tambahan

Tanda Kutip

Elemen

Tanda kutip ganda

Tanda kutip tunggal

Timestamp

Tidak digunakan.

Tidak digunakan

pengukuran, kunci tag, nilai tag, kunci field

Tidak digunakan.

Tidak digunakan

nilai field

Anda harus menggunakan tanda kutip ganda (") untuk mengapit nilai field tipe STRING. Jangan mengapit angka floating-point, integer, atau nilai Boolean dalam tanda kutip ganda (").

Tidak digunakan

  • Protokol baris memungkinkan Anda menggunakan tanda kutip ganda (") atau tanda kutip tunggal (') untuk mengapit nama pengukuran, kunci tag, nilai tag, dan kunci field. Namun, protokol baris menganggap tanda kutip ganda (") dan tanda kutip tunggal (') sebagai bagian dari nama, kunci, atau nilai. Hal ini dapat membuat sintaks permintaan menjadi kompleks. Contoh berikut menunjukkan bagaimana tanda kutip ganda (") dan tanda kutip tunggal (') memengaruhi sintaks permintaan.

Contoh

Contoh 1: Protokol Baris Tidak Valid - Mengapit Timestamp dalam Tanda Kutip Ganda

> INSERT mymeas value=9 "1466625759000000000"
ERR: {"error":"unable to parse 'mymeas value=9 \"1466625759000000000\"': bad timestamp"}

Jika timestamp diapit dalam tanda kutip ganda (") atau tanda kutip tunggal ('), kesalahan bad timestamp akan terjadi.

Contoh 2: Kesalahan Semantik - Mengapit Nilai Field Boolean dalam Tanda Kutip Ganda

> INSERT mymeas value="true"
> SHOW FIELD KEYS FROM "mymeas"
name: mymeas
------------
fieldKey         fieldType
value            string

TSDB untuk InfluxDB® menganggap bahwa semua nilai field yang diapit dalam tanda kutip ganda (") adalah string.

Contoh 3: Kesalahan Semantik - Mengapit Nama Pengukuran 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   200

Jika Anda menggunakan tanda kutip ganda (") untuk mengapit nama pengukuran dalam data protokol baris Anda, kesalahan semantik mungkin terjadi. Untuk menghindari kesalahan semantik ini ketika Anda menggunakan tanda kutip ganda (") untuk mengapit nama pengukuran dalam klausa FROM, Anda harus menggunakan backslash (\) untuk meloloskan setiap tanda kutip ganda (").

Karakter khusus

Gunakan backslash (\) untuk meloloskan setiap karakter khusus berikut dalam kunci tag, nilai tag, dan kunci field:

  • Koma (,)

  • Tanda sama dengan (=)

  • Spasi ()

Gunakan backslash (\) untuk meloloskan setiap karakter khusus berikut dalam nama pengukuran:

  • Koma (,)

  • Spasi ()

Gunakan backslash (\) untuk meloloskan setiap karakter khusus berikut dalam nilai field tipe STRING:

  • Tanda kutip ganda (")

Protokol baris tidak memerlukan agar Anda meloloskan backslash (\). Anda tidak perlu meloloskan karakter khusus lain yang tidak terdaftar dalam topik ini.

Contoh

Contoh 1: Menulis Titik Data yang Mengandung 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"

Sistem menulis sebuah titik data. Dalam titik data tersebut, pengukuran adalah "measurement with quo⚡️es and emoji", kunci tag adalah tag key with sp⚡️ces, nilai tag adalah tag,value,with"commas", kunci field adalah field_k\ey, dan nilai field adalah string field value, only " need be esc⚡️ped.

Panduan penamaan tambahan

Karakter pagar (#) di awal baris adalah karakter valid yang menunjukkan awal dari komentar dalam protokol baris. TSDB untuk InfluxDB® mengabaikan semua karakter yang terletak antara karakter pagar (#) dan line feed berikutnya (\n).

Nama pengukuran, kunci tag, nilai tag, kunci field, dan nilai field bersifat peka huruf besar-kecil.

Protokol baris menggunakan kata kunci InfluxQL sebagai nama pengenal. Dalam sebagian besar kasus, kami merekomendasikan agar Anda tidak menggunakan kata kunci InfluxQL dalam skema Anda. Jika Anda menggunakan kata kunci InfluxQL dalam skema Anda, kata kunci InfluxQL tersebut mungkin dianggap sebagai kata kunci dari pernyataan permintaan. Hal ini dapat menyebabkan kesalahan untuk permintaan data.

Aturan sebelumnya tidak berlaku untuk kata kunci time. Anda dapat menggunakan kata kunci time sebagai nama kueri kontinu, nama database, nama pengukuran, nama kebijakan retensi, nama langganan, atau nama pengguna. Dalam kasus-kasus ini, Anda tidak perlu menggunakan tanda kutip ganda (") untuk mengapit kata kunci time. Namun, Anda tidak dapat menggunakan kata kunci time sebagai kunci field atau kunci tag. TSDB untuk InfluxDB® menolak permintaan tulis di mana kata kunci time digunakan sebagai kunci field atau kunci tag, dan melaporkan kesalahan. Untuk informasi lebih lanjut, lihat FAQ.

Menggunakan protokol baris untuk menulis data

Untuk informasi tentang cara menulis data protokol baris ke database, lihat bab "Alat".

Titik data duplikat

Sebuah titik data secara unik diidentifikasi oleh nama pengukuran, set tag, dan timestamp. Jika nama pengukuran, set tag, dan timestamp dari titik data baru sama dengan titik data yang sudah ada, titik data baru adalah titik data duplikat. Jika Anda mengirimkan titik data duplikat yang berisi set field berbeda dari titik data yang sudah ada, set field dari titik data baru menjadi gabungan dari set field sebelumnya dan set field baru. Jika terjadi konflik, set field baru akan diutamakan.

Untuk informasi lebih lanjut tentang contoh titik data duplikat dan cara menghindari masalah ini, lihat FAQ.

InfluxDB® adalah merek dagang terdaftar oleh InfluxData, yang tidak berafiliasi dengan, dan tidak mendukung, TSDB untuk InfluxDB®.