LindormTSDB memungkinkan Anda menggunakan sintaks SQL standar, PromQL, serta API dan SDK yang kompatibel dengan Time Series Database (TSDB) untuk mengkueri data. Topik ini menjelaskan cara mengkueri data spatio-temporal di LindormTSDB.
Gunakan sintaks SQL standar untuk mengkueri data
Disarankan untuk menggunakan sintaks SQL standar saat mengkueri data di LindormTSDB. LindormTSDB mengoptimalkan sintaks SQL untuk data deret waktu guna meningkatkan kinerja kueri dalam berbagai skenario. Dengan pendekatan ini, stabilitas server LindormTSDB dapat ditingkatkan dengan penggunaan sumber daya yang lebih efisien.
Fitur
Fitur-fitur spesifik untuk data deret waktu, seperti kueri downsampling, kueri agregat, dan kueri nilai terbaru, didukung. Untuk informasi lebih lanjut, lihat Kueri Downsampling dan Kueri Nilai Terbaru.
Berbagai operator fungsi untuk data deret waktu disediakan. Untuk informasi lebih lanjut, lihat Fungsi Deret Waktu Umum.
Berbagai kemampuan komputasi dan analisis SQL disediakan berdasarkan Apache Calcite. Untuk informasi lebih lanjut, lihat Dokumentasi Resmi Calcite.
Untuk informasi lebih lanjut tentang fitur yang disediakan oleh sintaks SQL standar di LindormTSDB, lihat Sintaks SQL.
Metode akses yang didukung oleh kueri SQL
Anda dapat menggunakan Java Native SDK, driver Java Database Connectivity (JDBC), dan operasi API SQL HTTP untuk melakukan kueri SQL. Tabel berikut menjelaskan ketiga metode tersebut.
Metode Akses | Skenario | Deskripsi | Referensi |
Java Native SDK | Pengembangan aplikasi Java | Java Native SDK mendukung transmisi data streaming dan menyediakan thread aman untuk pemanggilan API. Oleh karena itu, Anda tidak perlu mengelola koneksi tingkat bawah. | |
JDBC Driver | Pengembangan aplikasi Java yang memerlukan kerangka kerja | Anda harus mengembangkan kode di aplikasi Anda atau menggunakan Druid untuk mengelola kolam koneksi. JDBC harus digunakan bersama dengan kerangka kerja Object-Relational Mapping (ORM). | |
HTTP SQL API | Pengembangan aplikasi menggunakan bahasa pemrograman non-Java | LindormTSDB menyediakan operasi API berbasis HTTP untuk melakukan kueri SQL. Hasilnya dapat dikembalikan dalam mode streaming. |
Contoh
LindormTSDB menggunakan klausa SAMPLE BY untuk mengimplementasikan fitur deret waktu dalam kueri. Klausa SAMPLE BY digunakan untuk melakukan downsampling pada satu deret waktu. Klausa GROUP BY digunakan untuk melakukan agregasi pada beberapa deret waktu. SAMPLE BY dan GROUP BY tidak dapat digunakan bersama dalam satu klausa, namun Anda dapat menggunakannya secara terpisah dalam subkueri yang berbeda. Contoh berikut menunjukkan cara menggunakan klausa SAMPLE BY dan GROUP BY:
Gunakan
SAMPLE BYuntuk melakukan kueri downsampling pada satu deret waktu dengan interval downsampling selama 8 jam.SELECT device_id,region,time,count(humidity) AS count_humidity FROM sensor WHERE device_id='F07A1260' sample by 8h;Gunakan
SAMPLE BYuntuk melakukan kueri downsampling pada beberapa deret waktu, lalu gunakanGROUP BYuntuk mengagregasi data yang telah di-downsampling berdasarkan ID perangkat.SELECT device_id, max(avg_humidity) AS max_humidity FROM (SELECT device_id,region,time,avg(humidity) AS avg_humidity FROM sensor sample by 8h) group by device_id;
Gunakan API dan SDK yang kompatibel dengan TSDB untuk mengkueri data
LindormTSDB kompatibel dengan 90% kemampuan yang disediakan oleh TSDB. Oleh karena itu, jika aplikasi Anda menggunakan TSDB untuk menyimpan data, Anda dapat langsung menggunakan sintaks SQL yang didukung oleh LindormTSDB untuk mengkueri data tanpa perlu memodifikasi aplikasi Anda. Kami merekomendasikan Anda memodifikasi aplikasi Anda untuk mengizinkan kueri SQL.
Gunakan operasi yang kompatibel dengan TSDB untuk mengkueri data multi-nilai
Anda dapat mengkueri data multi-nilai yang ditulis menggunakan operasi yang kompatibel dengan TSDB, API SQL HTTP, Java Native SDK, dan protokol baris InfluxDB.
Data deret waktu dalam TSDB sesuai dengan tabel dalam LindormTSDB.
Untuk informasi lebih lanjut tentang cara mengkueri data multi-nilai, lihat topik-topik berikut:
Gunakan operasi API untuk mengkueri data multi-nilai: Kueri Titik Data Multivariat.
Gunakan SDK untuk mengkueri data multi-nilai: Gunakan Model Data Multi-Nilai SDK untuk Membaca Data.
Gunakan operasi yang kompatibel dengan TSDB untuk mengkueri data single-nilai
Anda dapat mengkueri data single-nilai yang ditulis menggunakan operasi API yang kompatibel dengan TSDB. Namun, kami tidak merekomendasikan penggunaan metode ini untuk mengkueri data.
Jika Anda ingin mengkueri data yang menggunakan API SQL HTTP, Java Native SDK, dan protokol baris InfluxDB, atau data multi-nilai yang ditulis menggunakan operasi yang kompatibel dengan TSDB, Anda harus menetapkan data deret waktu dalam format metric@field untuk menyesuaikan kueri ke data multi-nilai. Dalam format ini, tetapkan metric sebagai nama tabel dan field sebagai nama kolom yang menyimpan data yang ingin Anda kueri.
Untuk informasi lebih lanjut tentang cara mengkueri data single-nilai, lihat topik-topik berikut:
Gunakan operasi API untuk mengkueri data single-nilai: Kueri Titik Data Single-Nilai.
Gunakan SDK untuk mengkueri data single-nilai: Kueri Data.
Gunakan plugin Grafana untuk mengkueri data
Grafana adalah alat open source yang dapat digunakan untuk menampilkan sejumlah besar data pengukuran secara visual. Anda dapat menggunakan plugin sumber data Alibaba Cloud Lindorm yang disediakan oleh Grafana untuk mengakses data deret waktu di LindormTSDB.
Gunakan plugin Grafana untuk Lindorm untuk mengkueri data
Dengan menggunakan plugin sumber data Alibaba Cloud Lindorm yang disediakan oleh Grafana, Anda dapat menggunakan pernyataan SQL yang dihasilkan secara otomatis di editor atau membuat pernyataan SQL kustom untuk mengkueri data. Untuk informasi lebih lanjut, lihat Gunakan Grafana untuk Mengakses LindormTSDB.
Gunakan plugin Grafana untuk OpenTSDB untuk mengkueri data
LindormTSDB menyediakan operasi API yang kompatibel dengan OpenTSDB untuk mengkueri data. Anda dapat menggunakan plugin sumber data OpenTSDB yang disediakan oleh Grafana untuk mengkueri data deret waktu di Lindorm.
Jika Anda ingin mengkueri data yang menggunakan API SQL HTTP, Java Native SDK, dan protokol baris InfluxDB, atau data multi-nilai yang ditulis menggunakan operasi yang kompatibel dengan TSDB, Anda harus menetapkan data deret waktu dalam format metric@field untuk menyesuaikan kueri ke data multi-nilai. Dalam format ini, tetapkan metric sebagai nama tabel dan field sebagai nama kolom yang menyimpan data yang ingin Anda kueri.
Tingkatkan kinerja kueri
Metode | Skenario | Deskripsi | Perbedaan |
Pre-agregasi | Agregasi dan kueri sejumlah besar deret waktu secara real-time. | Pre-agregasi menggunakan fitur kueri kontinu yang disediakan oleh LindormTSDB untuk menghitung data yang akan dikueri terlebih dahulu dan menyimpan hasilnya ke tabel hasil. Dengan cara ini, kueri dipercepat karena hanya data di tabel hasil yang perlu dikueri. Untuk informasi lebih lanjut tentang kueri kontinu, lihat Kueri kontinu. | Dalam pre-agregasi, data dihitung terlebih dahulu sebelum benar-benar dikueri. Tabel hasil yang menyimpan hasil perhitungan berbeda dari tabel asli. Oleh karena itu, Anda harus menentukan tabel asli dan tabel hasil dalam kueri Anda saat menggunakan pre-agregasi. |
Pre-downsampling | Kueri deret waktu dalam rentang waktu yang luas. | Pre-downsampling menggunakan LindormDFS untuk melakukan downsampling dan menyimpan data yang ditulis secara terpisah. Saat Anda mengkueri data yang ditulis, data yang di-downsample dengan rasio pre-downsampling yang paling dekat dengan rasio downsampling yang ditentukan dalam kondisi kueri akan dikueri. Kemudian, data yang dikueri diagregasi dan dihitung. Dengan cara ini, jumlah data yang perlu dikueri dan dihitung secara real-time berkurang sehingga latensi kueri menurun. Untuk informasi lebih lanjut tentang pre-downsampling, lihat Pre-downsampling. | Dalam pre-downsampling, presisi waktu data asli berkurang. Data yang di-downsample dan data asli disimpan di tabel yang sama. Oleh karena itu, Anda tidak perlu menentukan tabel yang berbeda dalam kueri Anda saat menggunakan pre-downsampling. |