Topik ini menjelaskan cara melakukan kueri pada tabel logis.
Latar Belakang
-
Setelah menerapkan sharding database dan tabel, Anda memerlukan cara sederhana untuk mengkueri data yang tersebar di beberapa tabel fisik. Tabel logis menyediakan tampilan terpadu sehingga Anda dapat mengkueri data yang telah di-shard seolah-olah berada dalam satu tabel tunggal, menyembunyikan kompleksitas penentuan lokasi manual database dan tabel fisik yang tepat untuk setiap kueri.
-
Data Management (DMS) memungkinkan kueri transparan tersebut dengan menggabungkan data dari
logical databasesdanlogical tables.
Prosedur
-
Pilih
logical databaseyang akan dikueri dan diekspor datanya. Sebelum mengonfigurasi algoritma perutean, Anda hanya dapat menjalankan pernyataanSELECT,UPDATE, danDELETE. PernyataanINSERTtidak didukung.Jika Anda menjalankan pernyataan
INSERTpada tahap ini, sistem akan mengembalikan error berikut:[Error] dsql.DSQLException: No shard route found, execution failed. Make sure a routing algorithm is configured for the logical table. -
Konfigurasikan algoritma perutean. Contoh ini menggunakan simple modulo. Untuk informasi lebih lanjut tentang konfigurasi algoritma kompleks, lihat Configure a routing algorithm.
Pada kotak dialog New algorithm, atur Algorithm type ke Single-column modulo, Modulo type ke Simple modulo, dan Routing field ke user_id (bigint). Atur Modulo ke
128, lalu klik Save. -
Jalankan pernyataan
INSERT.Sebagai contoh, jalankan INSERT INTO scend_test(gmt_create,gmt_modified,user_id) VALUES (now(),now(),2); untuk memasukkan catatan ke dalam tabel
scend_test. Tanda centang hijau akan muncul di area hasil jika eksekusi berhasil. -
Lakukan kueri cepat.
-
Setelah Anda mengonfigurasi algoritma perutean, Anda dapat mengkueri tabel shard fisik tertentu menggunakan bidang routing dalam kondisi kueri. Dengan ini, Anda tidak perlu lagi menghitung dan beralih secara manual di antara database dan tabel fisik. Di DMS SQL Console, jalankan pernyataan SQL
SELECT * FROM <code data-tag="code" id="code_a2fbd55c876f">scend_testWHEREuser_id= 4, yang menggunakan bidang routinguser_idsebagai kondisi kueri. Log eksekusi menunjukkan bahwa DMS merutekan tabel logisscend_testke tabel shard fisikpoc_dev.scend_test_000. -
Hasil kueri menyertakan kolom tambahan yang menunjukkan database dan tabel sumber. Anda dapat mengeklik nilai di kolom ini untuk membuka tabel shard fisik yang sesuai dengan pernyataan SQL dan kondisi kueri yang terisi otomatis. Misalnya, saat Anda menjalankan
SELECT * FROM <code data-tag="code" id="code_64bfb8d79453">scend_testWHEREuser_id= 1, kolom lokasi data di hasil kueri akan menampilkanpoc_dev.scend_test_000. Ini menunjukkan bahwa DMS mengarahkan data ke tabel shard fisik yang sesuai dan mengembalikan satu catatan yang cocok. -
Anda juga dapat menjalankan kueri tanpa menyertakan bidang routing sebagai kondisi. Hal ini akan melakukan pemindaian tabel penuh di seluruh tabel shard fisik, yang berguna untuk operasi seperti statistik ringkasan.
CatatanSintaks seperti
GROUP BYjuga didukung. Sebagian besar sintaks SQL konsisten dengan database sumber, tetapi subkueri saat ini belum didukung.Sebagai contoh, jika Anda menjalankan
SELECT COUNT(*) FROM scend_test;di SQL Console, hasilnya adalah 1, yang menunjukkan bahwa tabel tersebut berisi satu catatan.
-