Topik ini menjelaskan cara melakukan kueri dan mengimpor data dari Tablestore ke AnalyticDB for MySQL Edisi Perusahaan, Edisi Dasar, dan Edisi Data Lakehouse.
Prasyarat
-
Anda telah membuat instans Tablestore. Untuk informasi selengkapnya, lihat Aktifkan Tablestore dan buat instans.
-
Anda telah membuat kluster AnalyticDB for MySQL Edisi Perusahaan, Edisi Dasar, atau Edisi Data Lakehouse. Untuk informasi selengkapnya, lihat Buat kluster.
CatatanJika instans Tablestore menggunakan VPC, pastikan kluster AnalyticDB for MySQL dan instans Tablestore berada dalam VPC yang sama.
Latar Belakang
Tablestore adalah layanan database NoSQL multi-model yang dikembangkan oleh Alibaba Cloud. Layanan ini mendukung kueri berdasarkan Search Index. Di AnalyticDB for MySQL, Anda dapat melakukan kueri terhadap data Tablestore dengan metode seperti kueri titik (point) dan kueri rentang (range). AnalyticDB for MySQL dapat secara cerdas memilih tabel utama, indeks sekunder, atau Search Index untuk mempercepat kueri dan mengurangi biaya.
Instans Tablestore adalah entitas yang digunakan untuk mengelola layanan Tablestore. Setiap instans setara dengan sebuah database. Instans Tablestore berkorespondensi dengan skema atau database di AnalyticDB for MySQL. Jika instans Tablestore tidak terikat ke VPC, AnalyticDB for MySQL dapat langsung mengakses instans tersebut. Jika instans Tablestore menggunakan VPC, pastikan kluster AnalyticDB for MySQL dan instans Tablestore berada dalam VPC yang sama.
Data contoh
Contoh ini membuat tabel person di Tablestore dan memasukkan 4 catatan ke dalamnya. Jika Anda sudah memiliki sumber data, lewati langkah ini.
|
id (kunci utama) |
Name |
Age |
|
1 |
james |
10 |
|
2 |
bond |
20 |
|
3 |
jack |
30 |
|
4 |
lucy |
40 |
Prosedur
-
Buka editor Pengembangan SQL.
Login ke Konsol AnalyticDB for MySQL. Di pojok kiri atas konsol, pilih wilayah. Di panel navigasi sebelah kiri, klik Clusters. Temukan kluster yang ingin Anda kelola lalu klik ID kluster tersebut.
-
Di panel navigasi sebelah kiri, buka .
-
Buat database eksternal.
Berikut adalah contoh pernyataan untuk membuat database
adb_external_db:CREATE EXTERNAL database adb_external_db; -
Buat tabel eksternal.
CatatanTabel eksternal di AnalyticDB for MySQL harus memiliki nama kolom, jumlah kolom, dan urutan kolom yang sama dengan tabel di Tablestore. Tipe data kolom harus kompatibel. Untuk informasi selengkapnya tentang pemetaan tipe data, lihat Pemetaan tipe data.
Di database
adb_external_db, buat tabelperson. Contoh pernyataannya sebagai berikut:CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_db.person ( id int, name string, age int ) ENGINE = 'OTS' TABLE_PROPERTIES = '{ "mapped_name":"person", "location":"https://w0****la.cn-hangzhou.vpc.tablestore.aliyuncs.com" }'Parameter
Deskripsi
ENGINE='OTS'Mesin penyimpanan tabel eksternal. Untuk membaca dan menulis data ke Tablestore, atur nilainya menjadi OTS.
mapped_nameNama tabel di instans Tablestore. Untuk melihat nama tabel, login ke Konsol Tablestore dan buka halaman All Instances.
locationTitik akhir VPC dari instans Tablestore. Untuk melihat titik akhir VPC, login ke Konsol Tablestore dan buka halaman All Instances.
-
Setelah tabel eksternal dibuat, AnalyticDB for MySQL secara otomatis memetakan data tabel dari Tablestore ke tabel AnalyticDB for MySQL. Anda dapat melakukan kueri terhadap data di tabel
personTablestore dengan menggunakan pernyataan SELECT di AnalyticDB for MySQL.SELECT * FROM adb_external_db.person;Output yang diharapkan:
+------+-------+------+ | id | name | age | +------+-------+------+ | 1 | james | 10 | | 2 | bond | 20 | | 3 | jack | 30 | | 4 | lucy | 40 | +------+-------+------+ 4 rows in set (0.35 sec) -
Jika Anda ingin mengimpor data dari Tablestore ke AnalyticDB for MySQL, ikuti langkah-langkah berikut.
-
Buat database di AnalyticDB for MySQL:
CREATE DATABASE adb_demo; -
Buat tabel di AnalyticDB for MySQL untuk menyimpan data yang diimpor:
CatatanTabel baru harus memiliki urutan kolom dan jumlah kolom yang sama dengan tabel eksternal yang dibuat pada Langkah 3. Tipe data kolom harus kompatibel.
CREATE TABLE IF NOT EXISTS adb_demo.adb_import_test( id int, name string, age int ) DISTRIBUTED BY HASH(id); -
Tulis data ke tabel:
-
Metode 1: Anda dapat menggunakan pernyataan
INSERT INTOuntuk mengimpor data. Jika terjadi duplikasi kunci utama, operasi penulisan saat ini akan diabaikan secara otomatis dan tidak dilakukan pembaruan. Operasi ini setara denganINSERT IGNORE INTO. Untuk informasi selengkapnya, lihat INSERT INTO. Berikut contohnya:INSERT INTO adb_demo.adb_import_test SELECT * FROM adb_external_db.person;Lakukan kueri terhadap tabel tujuan. Contoh:
SELECT * FROM adb_demo.adb_import_test;Output yang diharapkan:
+------+-------+------+ | id | name | age | +------+-------+------+ | 1 | james | 10 | | 2 | bond | 20 | | 3 | jack | 30 | | 4 | lucy | 40 | +------+-------+------+ -
Metode 2: Jalankan pernyataan
INSERT OVERWRITEuntuk mengimpor data, menimpa data yang sudah ada di tabel. Berikut contohnya:INSERT OVERWRITE adb_demo.adb_import_test SELECT * FROM adb_external_db.person; -
Metode 3: Impor data secara asinkron dengan menggunakan pernyataan
INSERT OVERWRITE. Anda dapat menggunakanSUBMIT JOBuntuk mengirimkan pekerjaan asinkron, yang kemudian dijadwalkan oleh backend. Anda dapat menambahkan Hint (/*+ direct_batch_load=true*/) sebelum tugas penulisan untuk mempercepat prosesnya. Untuk informasi selengkapnya, lihat Penulisan asinkron. Berikut contohnya:SUBMIT JOB INSERT OVERWRITE adb_demo.adb_import_test SELECT * FROM adb_external_db.person;Pernyataan tersebut mengembalikan job ID:
+---------------------------------------+ | job_id | +---------------------------------------+ | 2020112122202917203100908203303****** |Untuk informasi selengkapnya tentang pengiriman pekerjaan impor asinkron, lihat Kirimkan pekerjaan impor secara asinkron.
-
-
Pemetaan tipe data
Tabel berikut menjelaskan pemetaan tipe data antara Tablestore dan AnalyticDB for MySQL:
|
Tipe Tablestore |
AnalyticDB for MySQL tipe |
|
INTEGER (8 byte) |
BIGINT (8 byte) |
|
STRING |
VARCHAR |
|
BINARY |
BINARY |
|
DOUBLE |
DOUBLE |
|
BOOLEAN |
BOOLEAN |