Layanan spasial-temporal Lindorm GanosBase memperluas kemampuan primary key index dan secondary index dari Lindorm untuk mempercepat kueri spasial-temporal. Kueri spasial-temporal adalah kueri yang mencakup kondisi berdasarkan kolom spasial, seperti kolom koordinat lintang dan bujur atau kolom bertipe Geometry, serta dapat melibatkan kombinasi kolom spasial dan temporal, misalnya kolom Geometry dan kolom waktu.
Z-ORDER index
Saat membuat primary key index atau secondary index, Anda dapat menggunakan fungsi Z-ORDER untuk mengindeks kolom spasial atau kombinasi kolom spasial dan temporal. Fungsi Z-ORDER menghasilkan nilai terenkripsi—dikenal sebagai enkode Z-ORDER atau enkode spasial-temporal—yang menjadi bagian dari primary key atau secondary index. Indeks spasial-temporal tidak berdiri sendiri, melainkan tertanam dalam primary key atau secondary index Lindorm guna mempercepat kueri spasial-temporal.
Klasifikasi indeks berbasis fungsi Z-ORDER
Z-ORDER primary key index
Jika enkode Z-ORDER merupakan bagian dari primary key index, indeks tersebut disebut Z-ORDER primary key index. Contohnya: PRIMARY KEY(Z-ORDER(g)).
Z-ORDER secondary index
Jika enkode Z-ORDER merupakan bagian dari secondary index, indeks tersebut disebut Z-ORDER secondary index. Contohnya: Z-ORDER(g).
Untuk informasi lebih lanjut tentang cara membuat indeks Z-ORDER, lihat Create a spatiotemporal index.
Deskripsi fungsi Z-ORDER
Lindorm GanosBase secara otomatis menghitung enkode spasial-temporal berdasarkan parameter input fungsi Z-ORDER. Tabel berikut mencantumkan jenis fungsi Z-ORDER, parameter, dan skenarionya.
Jika dua objek spasial sangat berdekatan (pada tingkat sentimeter), fungsi Z-ORDER mungkin menghasilkan enkode spasial-temporal yang sama.
|
Type |
Parameter description |
Scenarios |
|
|
|
Membuat indeks untuk data titik guna mempercepat kueri dengan kondisi rentang spasial. |
|
|
|
Membuat indeks untuk data titik beserta waktu guna mempercepat kueri dengan kondisi rentang spasial dan waktu sekaligus. |
|
|
|
Membuat indeks untuk data LineString atau Polygon guna mempercepat kueri dengan kondisi rentang spasial. |
|
|
|
Membuat indeks untuk data LineString atau Polygon beserta waktu guna mempercepat kueri dengan kondisi rentang spasial dan waktu sekaligus. |
Grid secondary index
Fitur grid secondary index hanya didukung oleh LindormTable versi 2.6.5 atau lebih baru.
Saat Anda menerapkan fungsi S2 pada kolom Geometry selama pembuatan indeks, LindormTable secara otomatis membangun grid secondary index. Fungsi S2 mendukung tipe POLYGON, MULTIPOLYGON, LINESTRING, dan MULTILINESTRING. Indeks ini melakukan penyaringan dan perhitungan data berdasarkan grid.
Grid secondary index menggunakan algoritma Google S2 untuk membagi ruang menjadi grid berukuran seragam yang disebut S2Cells. Setiap grid memiliki ID unik bernama S2CellID, dan indeks tersebut mencatat poligon mana saja yang berpotongan dengan setiap grid.
Deskripsi fungsi indeks S2
Sintaks
Fungsi S2 menerima objek geometri dan tingkat presisi sebagai input, menghitung grid yang diliputi oleh geometri tersebut pada presisi yang ditentukan, lalu mengembalikan kumpulan ID grid (S2CellIDs). Untuk informasi lebih lanjut tentang cara membuat indeks grid, lihat Create a spatiotemporal index.
Set<Long> S2(String geomColumnName, int level)
Deskripsi parameter
|
Parameter |
Description |
|
geomColumnName |
Nama kolom bertipe Polygon (POLYGON atau MULTIPOLYGON) atau LineString (LINESTRING atau MULTILINESTRING). Data spasial dalam kolom ini harus menggunakan koordinat WGS84. Penting
Tipe LineString (LINESTRING atau MULTILINESTRING) hanya didukung oleh LindormTable versi 2.6.7.5 atau lebih baru. Jika Anda tidak dapat melakukan upgrade LindormTable di Konsol, hubungi dukungan teknis Lindorm (DingTalk ID: s0s3eg3). |
|
level |
Tingkat presisi grid S2. Nilai yang valid: [1, 30]. |
Pemilihan indeks
Skenario penggunaan indeks Z-ORDER
Indeks Z-ORDER memberikan penyaringan efektif untuk data titik spasial. Jika kueri Anda melibatkan posisi titik spasial, buatlah indeks Z-ORDER dengan fungsi yang sesuai. Untuk informasi lebih lanjut, lihat Z-ORDER function description.
Skenario umum penggunaan indeks Z-ORDER:
-
Kueri rentang spasial-temporal: Kueri lintasan kendaraan dalam area tertentu selama periode tertentu.
-
Kueri kedekatan: Temukan kendaraan dalam jarak tertentu dari suatu lokasi dan kembalikan posisi real-time-nya.
-
Statistik Masuk/Keluar Lintasan: Kumpulkan statistik titik lintasan yang masuk dan keluar dari area tertentu, termasuk waktu masuk, waktu keluar, durasi tinggal, dan jumlah lintasan.
Indeks Z-ORDER juga mendukung penyaringan dasar untuk data LineString atau Polygon, contohnya:
-
Untuk tipe LineString: Kueri jalan yang berada dalam jarak tertentu dari suatu lokasi, dengan setiap jalan direpresentasikan sebagai LINESTRING atau MULTILINESTRING.
-
Untuk tipe Polygon: Temukan distrik bisnis dalam area tertentu, dengan distrik bisnis direpresentasikan sebagai geometri POLYGON atau MULTIPOLYGON.
Skenario penggunaan grid secondary index
Dibandingkan dengan indeks Z-ORDER, grid secondary index memberikan penyaringan yang lebih baik untuk data LineString atau Polygon. Untuk kueri non-agregat, indeks ini menyaring grid yang tidak relevan guna mempercepat performa kueri, contohnya:
-
Pemantauan geofence: Lakukan kueri real-time untuk menemukan geofence mana saja yang dilewati oleh titik lintasan. Hasil dari jutaan data geofence dapat diperoleh dalam hitungan milidetik.
-
Kueri kedekatan: Lakukan kueri real-time untuk menemukan distrik bisnis dalam radius tertentu dari suatu lokasi.
Grid secondary index dapat diperbarui kapan saja untuk menyimpan data statistik, sehingga memungkinkan statistik agregat cepat berbasis grid, contohnya:
-
Statistik jumlah: Hitung jumlah distrik bisnis atau lintasan per grid.
-
Statistik atribut regional: Hitung metrik seperti cakupan vegetasi atau total volume transaksi per grid.