Operasi Data Definition Language (DDL) pada tabel sumber yang memiliki Search View dapat memengaruhi tautan sinkronisasi. Topik ini menjelaskan dampak berbagai operasi DDL dan menyediakan praktik terbaik untuk membangun ulang tampilan tersebut bila diperlukan.
Dampak perubahan DDL pada tabel sumber
Tabel berikut menjelaskan dampak berbagai operasi DDL terhadap tautan sinkronisasi Search View.
Jenis perubahan | Operasi spesifik | Status sinkronisasi | Deskripsi |
Perubahan kolom | Drop a column | Normal | Nilai kolom yang di-drop tetap dipertahankan dalam dokumen yang sudah ada. Untuk data inkremental, nilai field yang bersangkutan adalah |
Add a column | Normal | Kolom baru tidak disinkronkan secara otomatis. Untuk menambahkannya ke Search View, lihat Praktik terbaik untuk mengubah Search View. | |
Modify a column type | Depends on the type | Untuk perubahan yang kompatibel tipe, seperti mengubah Untuk perubahan yang tidak kompatibel tipe, Search View menjadi tidak tersedia dan Anda harus membangun ulang tampilan tersebut. | |
Rename a column | Disrupted | Search View menggunakan nama kolom pada saat tampilan tersebut dibuat. Setelah Anda mengganti nama kolom, Search View tidak dapat menemukan kolom tabel sumber yang telah diganti namanya. Anda harus membangun ulang Search View. | |
Other (reorder columns, modify default values, modify comments, extend VARCHAR length, modify character sets, modify auto-increment properties, modify NULL constraints, etc.) | Normal | Operasi-operasi ini tidak memengaruhi sinkronisasi Search View. | |
Perubahan indeks | Add, drop, or modify a secondary index | Normal | Perubahan pada secondary index tidak memengaruhi sinkronisasi. |
Drop or modify the primary key index | Disrupted | Search View bergantung pada primary key tabel sumber untuk sinkronisasi data. Jika Anda mengubah primary key, Anda harus membangun ulang Search View. | |
Perubahan tabel |
| Disrupted | Search View tidak dapat mendeteksi operasi |
Other ( | Normal | Operasi-operasi ini tidak memengaruhi sinkronisasi Search View. | |
Perubahan tabel partisi | Convert to a partitioned table, add a partition, merge partitions, repartition, analyze a partition, check a partition, optimize a partition, rebuild a partition, convert to a non-partitioned table, use a local index, etc. | Normal | Operasi-operasi ini tidak memengaruhi sinkronisasi Search View. |
| Disrupted | Search View tidak dapat mendeteksi operasi-operasi ini. Untuk menghapus data dan menyinkronkan perubahan tersebut, gunakan | |
| Disrupted | Search View tidak dapat mendeteksi penggantian atau perbaikan data langsung dalam suatu partisi. Data di partisi lain tidak terpengaruh. Bangun ulang Search View setelah melakukan operasi-operasi ini. |
Praktik terbaik untuk mengubah Search View
Untuk memodifikasi struktur sinkronisasi Search View, misalnya dengan menambahkan field baru, bangun ulang tampilan tersebut dengan membuat indeks dan Search View baru. Setelah Search View baru sepenuhnya tersinkronisasi dan diverifikasi, alihkan traffic kueri aplikasi Anda ke indeks baru tersebut.
Saat ini, perubahan online pada Search View yang sudah ada tanpa membangun ulang tidak didukung.
Contoh: Tambahkan kolom baru ke tabel shop.user dan bangun ulang Search View-nya. Misalkan Search View yang sudah ada menyinkronkan tabel shop.user (termasuk kolom id, name, phone, gmt_create) ke indeks bernama user_v1. Untuk menambahkan kolom membership_level tanpa mengganggu kueri online:
Create a new index: Di node PolarSearch, buat indeks baru bernama
user_v2yang mencakup fieldmembership_levelbaru dalam pemetaannya.PUT user_v2 { "mappings": { "properties": { "id": { "type": "keyword" }, "name": { "type": "text", "fields": { "keyword": { "type": "keyword" } } }, "phone": { "type": "keyword" }, "gmt_create": { "type": "date" }, "membership_level": { "type": "integer" } } } }Modify the source table: Di instans PolarDB for MySQL sumber, tambahkan kolom baru ke tabel
user.ALTER TABLE shop.user ADD COLUMN membership_level TINYINT NOT NULL DEFAULT 0 COMMENT 'Membership level';Create a new Search View: Buat Search View baru untuk menyinkronkan data dari tabel
shop.userke indeksuser_v2.CREATE SEARCH VIEW user_v2 AS SELECT id, name, phone, gmt_create, membership_level FROM shop.user;Verify and switch over: Gunakan
SHOW SEARCH VIEW STATUSuntuk memeriksa status Search View baru. Saat latensi sinkronisasi turun menjadi 0–1 detik, verifikasi data dalam indeks baru. Setelah dikonfirmasi, alihkan traffic kueri aplikasi Anda ke indeksuser_v2yang baru.Clean up old resources: Setelah memastikan Search View baru stabil, hapus Search View lama dan indeks
user_v1.DROP SEARCH VIEW user_v1;