全部产品
Search
文档中心

:Tulis data

更新时间:Jul 02, 2025

Dalam SDK Time Series Database (TSDB), kelas Point mendefinisikan titik dalam waktu. Objek Point adalah titik data pada suatu waktu dalam deret waktu (juga dikenal sebagai timeline).

Buat objek Point

Anda dapat menggunakan metode berbeda untuk membuat objek Point dalam format yang bervariasi. Bagian ini menjelaskan tiga metode pembuatan objek Point beserta contohnya.

Penting

Untuk membuat objek Point, Anda harus menentukan setidaknya satu pasangan nilai kunci tag.

Contoh 1

Saat membuat objek Point, gunakan timestamp dalam detik untuk menentukan waktu dari titik data dan tentukan data deret waktu serta tag untuk titik data tersebut.

// Gunakan timestamp yang diukur dalam detik.
int timestamp = (int)(System.currentTimeMillis()/1000);

// Buat objek Point.
Point point = Point.metric("test1")
                    .tag("tagk1", "tagv1")
                    .tag("tagk2", "tagv2")
                    .tag("tagk3", "tagv3")
                   .timestamp(timestamp).value(123,456)
                   .build();

Contoh 2

Saat membuat objek Point, gunakan timestamp dalam milidetik untuk menentukan waktu dari titik data, tentukan data deret waktu, dan gunakan HashMap untuk menentukan tag untuk titik data tersebut.

// Gunakan timestamp yang diukur dalam milidetik.
long timestamp = System.currentTimeMillis();

// Gunakan HashMap untuk menentukan tag.
Map<String,String> tagsMap = new HashMap<String,String>();
tagsMap.put("tagk1", "tagv1");
tagsMap.put("tagk2", "tagv2");

// Buat objek Point.
Point point = Point.metric("test1")
                    .tag(tagsMap)
                   .value(timestamp,123,456)
                   .build();

Contoh 3

Saat membuat objek Point, gunakan java.util.Date untuk menentukan waktu dari titik data.

// Gunakan java.util.Date untuk menentukan waktu dari titik data yang akan dibuat. 
Point point = Point.metric("test1")
                    .tag("tagk1", "tagv1")
                   .value(new Date,123.456)
                   .build();

Tulis data

Klien TSDB menyediakan dua mode penulisan data: sinkron dan asinkron.

Mode Sinkron

Sebagai contoh, Anda perlu membuat 500 titik data dan mengirimkan titik-titik data tersebut ke TSDB.

Contoh Kode

List<Point> points = new ArrayList<Point>();
// Buat titik-titik data.
for(int i = 0; i<500; i++) {
    long timestamp = System.currentTimeMillis();
    Point point = Point.metric("test1")
                   .tag("tagk1", "tagv1")
                   .value(timestamp, Math.random())
                   .build();
    // Tambahkan titik-titik secara manual ke dalam daftar.
    points.add(point);
}

// Kirim daftarnya.
tsdb.putSync(points)
Penting

Dalam kebanyakan kasus, untuk memastikan performa tinggi dari penulisan sinkron, Anda perlu menambahkan titik-titik data yang telah dibuat secara manual ke dalam daftar. Kami merekomendasikan Anda menambahkan 500 hingga 1.000 titik data ke dalam setiap daftar. Kami juga merekomendasikan penggunaan beberapa thread untuk mengirimkan titik-titik data secara bersamaan.

Respon Penulisan Sinkron

Anda dapat menentukan informasi yang termasuk dalam respon sesuai dengan kebutuhan bisnis Anda.

  • Jika Anda ingin sistem mengembalikan objek kosong untuk permintaan Anda, gunakan konfigurasi berikut. Dengan cara ini, hasil yang dikembalikan sama dengan hasil dari pemanggilan POST /api/put.

    Result result = tsdb.putSync(ps);
  • Jika Anda ingin sistem mengembalikan ringkasan untuk permintaan Anda, gunakan konfigurasi berikut. Dengan cara ini, hasil yang dikembalikan sama dengan hasil dari pemanggilan POST/api/put?summary=true. Ringkasan hanya mencakup jumlah titik data yang berhasil ditulis dan jumlah titik data yang gagal ditulis.

    SummaryResult summaryResult = tsdb.putSync(ps,SummaryResult.class);
  • Jika Anda ingin sistem mengembalikan ringkasan untuk permintaan Anda, gunakan konfigurasi berikut. Dengan cara ini, hasil yang dikembalikan sama dengan hasil dari pemanggilan POST/api/put?details=true. Ringkasan mencakup jumlah titik data yang berhasil ditulis, jumlah titik data yang gagal ditulis, dan penyebab kegagalan penulisan.

    DetailsResult detailsResult = tsdb.putSync(ps,DetailsResult.class);

Mode Asinkron

Penulisan asinkron lebih sederhana daripada penulisan sinkron. Anda hanya perlu membuat titik-titik data dan kemudian mengirimkannya. Klien TSDB secara otomatis menambahkan titik-titik data ke dalam daftar sebelum dikirimkan.

Jika Anda tidak memiliki persyaratan khusus, kami merekomendasikan Anda menulis data dalam mode asinkron.

Contoh Kode

// Buat titik-titik data.
Point point = Point.metric("test1")
                   .tag("tagk1", "tagv1")
                   .value(timestamp, Math.random())
                   .build();
// Kirim titik-titik data.
tsdb.put(point);

Pengaturan Callback untuk Mode Asinkron

Jika Anda menulis data dalam mode asinkron dan ingin mendapatkan respons dari pemanggilan operasi PUT, konfigurasikan antarmuka callback.

Contoh Kode

final AtomicLong num = new AtomicLong();

// Buat objek callback.
BatchPutCallback cb = new BatchPutCallback() {

    @Override
    public void response(String address, List<Point> input, Result output) {
        long afterNum = num.addAndGet(input.size());
        System.out.println("Berhasil" + input.size() + ", Diproses" + afterNum);
    }

    @Override
    public void failed(String address, List<Point> input, Exception ex) {
        ex.printStackTrace();
        long afterNum = num.addAndGet(input.size());
        System.out.println("Gagal" + input.size() + ", Diproses" + afterNum);
    }

};

TSDBConfig config = TSDBConfig
                        .address("example.hitsdb.com", 8242)
                        .listenBatchPut(cb)    // Konfigurasikan antarmuka callback.
                        .config();

tsdb = TSDBClientFactory.connect(config);

Klien TSDB menyediakan empat antarmuka callback berikut:

  • BatchPutCallback: Jika Anda menulis data dalam mode sederhana, gunakan antarmuka ini. Operasi API adalah POST /api/put.

  • BatchPutSummaryCallback: Jika Anda menulis data dalam mode statistik, gunakan antarmuka ini. Operasi API adalah POST /api/put?summary=true.

  • BatchPutDetailsCallback: Jika Anda menulis data dalam mode rinci, gunakan antarmuka ini. Operasi API adalah POST /api/put?details=true.

  • BatchPutIgnoreErrorsCallback: Jika Anda menulis data dalam mode toleransi kesalahan, gunakan antarmuka ini. Operasi API adalah POST /api/put?ignoreErrors=true.

Konfigurasikan antarmuka callback sesuai dengan kebutuhan bisnis Anda. Untuk informasi lebih lanjut tentang mode penulisan dan skenario aplikasi, lihat Mode Penulisan dan Respon.

Penting

  1. Saat mengonfigurasi metode callback, jangan tentukan operasi yang memakan waktu dalam metode callback. Jika Anda perlu melakukan operasi yang memakan waktu, lakukan operasi tersebut pada thread pekerja lainnya.

  2. Metode response() dan metode failed() dipanggil dalam situasi yang berbeda:

    • Jika permintaan Anda valid dan diproses oleh server, metode response() dipanggil. Respon bervariasi tergantung pada jenis objek callback.

    • Jika permintaan Anda ditolak oleh server karena permintaan tersebut berisi pesan yang tidak valid, memicu pembatasan lalu lintas, gagal autentikasi, atau diidentifikasi sebagai tidak valid karena alasan lain, metode failed() dipanggil.

    Kami merekomendasikan Anda mengimplementasikan metode failed() saat mengimplementasikan antarmuka callback. Jika metode failed() tidak diimplementasikan, metode failed() default akan dipanggil. Metode failed() default adalah metode kosong.

  3. Dalam contoh kode untuk antarmuka callback yang disediakan dalam topik ini, model data nilai tunggal digunakan untuk menulis data. Metode menulis titik data multi-nilai serupa dengan metode menulis titik data nilai tunggal. Perbedaannya adalah Anda harus mengganti antarmuka callback dengan antarmuka callback yang sesuai yang disediakan dalam daftar berikut:

    • MultiFieldbatchPutCallback

    • MultiFieldbatchPutSummaryCallback

    • MultiFieldbatchPutDetailsCallback

    • MultiFieldbatchPutIgnoreErrorsCallback