全部产品
Search
文档中心

Lindorm:Tulis data ke LindormTSDB

更新时间:Jul 02, 2025

LindormTSDB mendukung enam metode berikut untuk menulis data: LindormTSDB SDK untuk Java, protokol baris InfluxDB®, pernyataan SQL standar, operasi API yang disediakan oleh Time Series Database (TSDB), antarmuka penulisan jarak jauh Prometheus, dan Apache Flink. Topik ini menjelaskan cara menggunakan metode-metode tersebut untuk menulis data ke LindormTSDB.

Gunakan LindormTSDB SDK untuk Java untuk menulis data

LindormTSDB SDK untuk Java cocok untuk pengembang yang menggunakan Java dalam mengembangkan aplikasi mereka. Untuk informasi lebih lanjut tentang cara menggunakan LindormTSDB SDK untuk Java, lihat Tutorial: Gunakan LindormTSDB SDK untuk Java untuk Terhubung dan Menggunakan LindormTSDB.

Berikut adalah manfaat utama LindormTSDB SDK untuk Java:

  • Menulis data secara asinkron tanpa harus menunggu sinkronisasi data.

  • Data ditulis otomatis dalam batch, menyederhanakan proses pengembangan dan meningkatkan efisiensi penulisan.

  • Koneksi dalam pool dapat digunakan kembali, mencegah risiko pembuatan sejumlah besar koneksi baru.

  • Permintaan gagal diulang secara otomatis tanpa perlu mengembangkan logika ulang dalam aplikasi Anda.

  • Menggunakan protokol enkode kustom untuk transmisi data, memastikan pengkodean dan dekode data yang efisien.

  • Menyediakan metode untuk memastikan keamanan thread sehingga Anda tidak perlu khawatir tentang masalah thread saat mengembangkan aplikasi.

  • Java Native SDK mendukung tiga kebijakan batasan skema: kuat, lemah, dan tanpa batasan.

Contoh

// Tentukan titik akhir LindormTSDB.
String url = "http://ld-bp17j28j2y7pm****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242";
// Buat klien LindormTSDB. Klien LindormTSDB aman-thread dan dapat digunakan kembali. Anda tidak perlu membuat klien untuk setiap thread lalu menutup klien setelah operasi selesai.
ClientOptions options = ClientOptions.newBuilder(url).build();
LindormTSDBClient lindormTSDBClient = LindormTSDBFactory.connect(options);

// Buat database dan tabel.
lindormTSDBClient.execute("CREATE DATABASE demo");
lindormTSDBClient.execute("demo","CREATE TABLE sensor (device_id VARCHAR TAG,region VARCHAR TAG,time BIGINT,temperature DOUBLE,humidity DOUBLE,PRIMARY KEY(device_id))");

// Tulis data ke LindormTSDB.
int numRecords = 10;
List<Record> records = new ArrayList<>(numRecords);
long currentTime = System.currentTimeMillis();
for (int i = 0; i < numRecords; i++) {
    Record record = Record
        .table("sensor")
        .time(currentTime + i * 1000)
        .tag("device_id", "F07A1260")
        .tag("region", "north-cn")
        .addField("temperature", 12.1 + i)
        .addField("humidity", 45.0 + i)
        .build();
    records.add(record);
}
CompletableFuture<WriteResult> future = lindormTSDBClient.write("demo", records);
// Proses data yang ditulis secara asinkron.
future.whenComplete((r, ex) -> {
    // Proses kegagalan penulisan.
    if (ex != null) {
        System.out.println("Gagal menulis.");
        if (ex instanceof LindormTSDBException) {
            LindormTSDBException e = (LindormTSDBException) ex;
            System.out.println("Tangkap LindormTSDBException, yang berarti permintaan Anda sampai di Lindorm TSDB, "
                               + "tetapi ditolak dengan respons kesalahan karena suatu alasan.");
            System.out.println("Kode Kesalahan: " + e.getCode());
            System.out.println("SQL State:  " + e.getSqlstate());
            System.out.println("Pesan Kesalahan: " + e.getMessage());
        }  else {
            ex.printStackTrace();
        }
    } else  {
        System.out.println("Berhasil menulis.");
    }
});
// Dalam contoh ini, operasi sinkronisasi sederhana dilakukan untuk memproses data yang ditulis ke tabel.
System.out.println(future.join());
Catatan

Untuk informasi lebih lanjut tentang cara mendapatkan titik akhir LindormTSDB, lihat Lihat Titik Akhir.

Gunakan protokol baris InfluxDB® untuk menulis data

LindormTSDB mendukung penggunaan protokol baris InfluxDB® untuk menulis data. Jika aplikasi Anda tidak dikembangkan dengan Java, kami sarankan menggunakan protokol baris untuk menulis data ke LindormTSDB. Anda dapat mengonfigurasi kebijakan batasan skema saat menggunakan protokol baris, dengan default kebijakan batasan skema adalah batasan lemah. Untuk informasi lebih lanjut, lihat Tulis Data dengan Menggunakan Protokol Baris InfluxDB.

Penting

Saat menggunakan protokol baris untuk menulis data ke LindormTSDB, presisi waktu dari data yang ditulis akan dikonversi menjadi milidetik. Oleh karena itu, terjadi kehilangan presisi jika data memiliki presisi waktu lebih tinggi dari milidetik.

Contoh

curl -X POST \
'http://ld-bp1489gr5t*****-proxy-tsdb.lindorm.rds.aliyuncs.com:8242/api/v2/write?precision=ms&db=default' \
-d '
sensor7,device_id=F07A1260,region=north-cn temperature=12.1,humidity=45 1619076780000
sensor7,device_id=F07A1260,region=north-cn temperature=13.2,humidity=47 1619076790000
sensor7,device_id=F07A1260,region=north-cn temperature=10.6,humidity=46 1619076800000
sensor7,device_id=F07A1260,region=north-cn temperature=18.1,humidity=44 1619076780000
sensor7,device_id=F07A1260,region=north-cn temperature=19.7,humidity=44 1619076790000
'

Gunakan pernyataan SQL standar untuk menulis data

Tabel berikut menjelaskan dua metode yang dapat digunakan saat menulis data ke LindormTSDB menggunakan pernyataan SQL.

Metode

Skenario

Deskripsi

Referensi

JDBC Driver

Aplikasi yang dikembangkan dengan menggunakan Java

Saat Anda menggunakan JDBC untuk menulis data ke LindormTSDB, Anda harus mengembangkan kode dalam aplikasi Anda atau menggunakan Druid untuk mengelola pool koneksi.

Java JDBC Driver

HTTP SQL API

Aplikasi yang dikembangkan dengan menggunakan bahasa pemrograman non-Java

LindormTSDB memungkinkan Anda menggunakan pernyataan SQL untuk menulis data dengan memanggil operasi API berbasis HTTP.

Gunakan API SQL berbasis HTTP dari LindormTSDB

Gunakan operasi API yang disediakan oleh TSDB untuk menulis data

LindormTSDB kompatibel dengan operasi API dari TSDB. Jika aplikasi Anda menggunakan TSDB untuk menyimpan data, Anda dapat menggunakan operasi API yang disediakan oleh TSDB untuk menulis data ke LindormTSDB. Tabel berikut menjelaskan dua metode yang dapat digunakan saat menggunakan operasi API TSDB untuk menulis data.

Metode

Deskripsi

Referensi

Tulis data multi-nilai.

Operasi /api/mput digunakan untuk menulis data multi-nilai. Secara default, kebijakan batasan skema adalah tanpa batasan, yang berarti tabel deret waktu tidak dibuat dan pernyataan SQL tidak dapat digunakan untuk menanyakan data. Jika ingin menggunakan pernyataan SQL, Anda dapat membuat tabel deret waktu secara manual atau mengatur kebijakan batasan skema ke batasan lemah untuk mengizinkan pembuatan otomatis tabel deret waktu.

Catatan

Untuk informasi lebih lanjut tentang cara mengubah kebijakan batasan skema, lihat Pilih Kebijakan Batasan Skema Berdasarkan Metode Penulisan Data.

Tulis data single-nilai.

Operasi /api/put digunakan untuk menulis data single-nilai. Metode ini dapat digunakan untuk menulis data ke OpenTSDB. Secara default, kebijakan batasan skema harus tanpa batasan, yang berarti tabel deret waktu tidak dibuat dan pernyataan SQL tidak dapat langsung digunakan untuk menanyakan data. Kami sarankan agar Anda tidak menggunakan metode ini untuk menulis data ke LindormTSDB.

  • Gunakan operasi API untuk menulis data single-nilai: Tulis Data.

  • Gunakan SDK untuk menulis data single-nilai: Tulis Data.

Gunakan antarmuka penulisan jarak jauh Prometheus untuk menulis data

LindormTSDB dapat digunakan sebagai penyimpanan jarak jauh Prometheus. Setelah menulis data ke LindormTSDB menggunakan antarmuka penulisan jarak jauh, Anda dapat menggunakan pernyataan PromQL untuk menanyakan data. Untuk informasi lebih lanjut, lihat Gunakan Prometheus untuk Terhubung dan Menggunakan LindormTSDB.

Gunakan Apache Flink untuk menulis data

Anda dapat menggunakan Sink connector yang mengintegrasikan LindormTSDB SDK untuk Java untuk menulis data ke LindormTSDB. Untuk informasi lebih lanjut, lihat Gunakan Flink untuk Menulis Data ke LindormTSDB.