Topik ini menjelaskan cara menulis data ke LindormTSDB menggunakan Java Database Connectivity (JDBC).
Mengembangkan aplikasi untuk melakukan operasi penulisan data yang efisien berdasarkan JDBC
Jika Anda menggunakan JDBC untuk mengembangkan aplikasi, disarankan menggunakan objek PreparedStatement di JDBC. Dengan pendekatan ini, Anda dapat memasukkan beberapa catatan ke dalam database secara bersamaan. Ikuti langkah-langkah berikut:
-
Gunakan JDBC untuk membuat objek
connection.Untuk informasi lebih lanjut tentang cara menggunakan JDBC untuk terhubung ke database, lihat Gunakan Lindorm JDBC Driver untuk Terhubung dan Menggunakan Lindorm TSDB (Direkomendasikan).
-
Buat objek
PreparedStatementdan tentukan pernyataan INSERT yang mencakup parameter yang diperlukan.Contoh kode berikut menunjukkan cara membuat objek
PreparedStatementberdasarkan data uji udara yang disediakan dalam topik Rancang Tabel Deret Waktu:StringBuilder builder = new StringBuilder(); builder.append("INSERT INTO aqm (city, district, id, time, pm2_5, pm10, so2, no2) "); builder.append("VALUES (?, ?, ?, ?, ?, ?, ?, ?)"); PreparedStatement preparedStmt = connection.prepareStatement(builder.toString()); -
Ikat parameter input ke objek
PreparedStatementdan jalankan pernyataan INSERT untuk menulis data yang ditentukan oleh parameter input ke dalam database.Contoh kode berikut menunjukkan cara mengikat parameter input dalam pernyataan INSERT pada langkah sebelumnya ke objek PreparedStatement:
for (int i = 0; i < batchSize; i++) { // Ikatan parameter ke objek sesuai urutan kolom parameter yang ditentukan dalam pernyataan INSERT. // Parameter seperti city, district, id, ts, dan pm25 dalam kode berikut adalah variabel lokal yang digunakan untuk mengikat parameter: preparedStmt.setString(1, city); preparedStmt.setString(2, district); preparedStmt.setString(3, id); preparedStmt.setTimestamp(4, ts); preparedStmt.setDouble(5, pm25); preparedStmt.setDouble(6, pm10); preparedStmt.setDouble(7, so2); preparedStmt.setDouble(8, no2); // Tambahkan parameter ke batch. preparedStmt.addBatch(); } // Tulis data yang ditentukan dalam batch ke database. int[] results = preparedStmt.executeBatch(); // Kueri jumlah catatan data yang telah ditulis dari hasil. Sisa kode dilewati. }
-
Saat menggunakan JDBC di LindormTSDB, Anda dapat menggunakan objek
PreparedStatementuntuk mengonfigurasi parameter hanya dengan placeholder tanda tanya (?). Saat memanggil operasi API yang disediakan olehPreparedStatementuntuk mengikat parameter, pastikan nilai yang sesuai dengan indeks parameter yang ditentukan untuksetXXX()konsisten dengan parameter kolom yang sesuai dengan placeholder. -
Jika parameter input diikat dalam batch sebelum metode
executeBatch()dipanggil untuk objekPreparedStatement, jumlah batch yang lebih besar tidak selalu berarti performa database yang lebih baik. Performa database bervariasi berdasarkan definisi tabel tempat data dimasukkan. Jika tabel hanya berisi satu kolom bidang dan hingga lima kolom tag, serta variabelbatchSizedalam objekPreparedStatementdiatur ke 5000, database memberikan performa tulis yang optimal.