Halaman ini menjelaskan pertimbangan utama dan langkah-langkah yang harus diikuti saat bermigrasi dari Spanner ke database dialek PostgreSQL lain jika Anda ingin memindahkan aplikasi dari Spanner atau Google Cloud. Anda juga dapat menggunakan informasi di halaman ini jika perlu memahami atau menunjukkan kelayakan pemindahan database, misalnya, untuk perencanaan bencana exit tertekan.
Antarmuka PostgreSQL Spanner adalah pilihan terbaik untuk aplikasi yang memerlukan opsi untuk di-deploy ke lingkungan lain yang kompatibel dengan PostgreSQL, baik dalam Google Cloud maupun di tempat lain. Dengan menggunakan sintaksis yang sudah dikenal dan klien standar dari ekosistem PostgreSQL, antarmuka PostgreSQL memungkinkan developer dan operator menggunakan pengetahuan dan keterampilan PostgreSQL yang sudah ada.
Dialect ini menggunakan pemrosesan kueri, koordinasi transaksi, penyimpanan terdistribusi, dan infrastruktur jaringan yang sama dengan dialek GoogleSQL. Jika Anda memerlukan database yang mendukung portabilitas, Anda tidak akan mengorbankan skalabilitas inti, konsistensi, atau manfaat harga-performa Spanner saat memilih antarmuka PostgreSQL.
Pelajari lebih lanjut perbedaan antara dialek PostgreSQL dan GoogleSQL di Spanner.
Pada tingkat tinggi, langkah-langkahnya adalah sebagai berikut:
- Menghapus ekstensi khusus Spanner dari kueri dan pernyataan DDL
- Memigrasikan skema
- Memigrasikan data
- Memigrasikan aplikasi
Pertimbangan khusus Spanner
Antarmuka PostgreSQL Spanner mendukung kueri PostgreSQL secara langsung, sehingga sebagian besar kueri SQL yang berjalan di database dialek PostgreSQL Spanner memiliki perilaku yang sama dengan database lain yang kompatibel dengan PostgreSQL. Dengan menggunakan pendekatan ini, jumlah perubahan SQL dan akses data yang diperlukan untuk memindahkan aplikasi dari satu platform ke platform lain kemungkinan rendah. Hal ini membuat proses transfer menjadi lebih cepat, lebih mudah, dan kurang rentan terhadap error dibandingkan dengan database dialek GoogleSQL serupa.
Selain kompatibilitas PostgreSQL yang luas, antarmuka PostgreSQL menawarkan sejumlah ekstensi khusus Spanner. Jika menggunakan ekstensi ini di aplikasi, Anda harus menghapusnya atau memetakan ke fitur PostgreSQL secara manual. Beberapa contoh penting diberikan dalam ekstensi sintaksis kueri dan ekstensi Pengelolaan Skema (DDL).
Ekstensi sintaksis kueri
Antarmuka PostgreSQL Spanner menyediakan sejumlah ekstensi khusus Spanner. Sebagian besar menggunakan awalan spanner.
untuk identifikasi. Dalam tabel berikut, kami mencantumkan ekstensi ini dan
tindakan yang mungkin perlu Anda lakukan sebelum aplikasi yang sama dapat berjalan di
database PostgreSQL.
| Jenis ekstensi | Ekstensi tertentu | Tindakan yang harus dilakukan sebelum migrasi |
| Fungsi khusus Spanner |
|
Temukan fungsi yang diawali dengan spanner. dan hapus panggilan ini.
|
| Ekstensi jenis |
|
Hapus sintaksis VECTOR LENGTH atau pertimbangkan untuk menggunakan
pgvector.
|
| Sintaksis kueri | Tidak perlu tindakan apa pun karena petunjuk ditampilkan di dalam komentar.
Untuk mengetahui detail tentang pertimbangan performa, lihat Migrasi kueri. |
|
| Prosedur sistem tersimpan | Hapus panggilan ke spanner.cancel_query().
Jika ingin, Anda dapat mengganti panggilan dengan PostgreSQL yang setara. |
|
| Operasi SET/SHOW | Dapat diabaikan karena PostgreSQL tidak memiliki parameter bawaan
yang dimulai dengan spanner., sehingga menetapkan variabel apa pun
dengan awalan tersebut tidak akan berdampak pada perilaku yang diharapkan. |
Ekstensi Pengelolaan Skema (DDL)
Spanner menawarkan berbagai ekstensi yang terkait dengan pengelolaan data, seperti yang dijelaskan di halaman bahasa definisi data (DDL).
| Ekstensi | Tindakan yang harus dilakukan sebelum migrasi |
| Tabel yang diselingi
Menempatkan data terkait banyak-ke-satu dalam penyimpanan fisik, sehingga penggabungan di antara tabel tersebut menjadi jauh lebih efisien. |
Hapus klausa INTERLEAVE IN. |
| Stempel waktu commit
Memungkinkan penyimpanan stempel waktu commit transaksi secara atomik ke dalam kolom. |
Ganti SPANNER.COMMIT_TIMESTAMP dengan jenis stempel waktu PostgreSQL dan kelola setelan stempel waktu di aplikasi Anda atau hapus kolom tersebut.
|
| Pemulihan point-in-time
Memberikan perlindungan terhadap penghapusan atau penulisan yang tidak disengaja. |
Hapus semua pernyataan DDL yang menetapkan
spanner.version_retention_period.
|
| Time to live (TTL)
Meminta penghapusan data secara otomatis berdasarkan usia. |
Hapus klausa TTL INTERVAL. Pertimbangkan untuk memanfaatkan
cron atau tugas terjadwal untuk menghapus data yang sudah tidak berlaku secara berkala.
baris.
|
| Opsi pengoptimal
Menetapkan opsi untuk meminimalkan potensi regresi performa saat pengoptimal kueri atau statistik berubah. |
Hapus pernyataan DDL yang menetapkan opsi pengoptimal. |
| Aliran data perubahan |