Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Migrasi dari PostgreSQL ke Aurora DSQL
Aurora DSQL dirancang agar kompatibel dengan PostgreSQL, mendukung fitur relasional inti seperti transaksi ACID, indeks sekunder, join, dan operasi DML standar. Sebagian besar aplikasi PostgreSQL yang ada dapat bermigrasi ke Aurora DSQL dengan sedikit perubahan.
Bagian ini memberikan panduan praktis untuk memigrasikan aplikasi Anda ke Aurora DSQL, termasuk kompatibilitas kerangka kerja, pola migrasi, dan pertimbangan arsitektur.
Kerangka kerja dan kompatibilitas ORM
Aurora DSQL menggunakan protokol kawat PostgreSQL standar, memastikan kompatibilitas dengan driver dan kerangka kerja PostgreSQL. ORM paling populer bekerja dengan Aurora DSQL dengan sedikit atau tanpa perubahan. Lihat Adaptor dan dialek Aurora DSQL untuk implementasi referensi dan integrasi ORM yang tersedia.
Pola migrasi umum
Saat bermigrasi dari PostgreSQL ke Aurora DSQL, beberapa fitur bekerja secara berbeda atau memiliki sintaks alternatif. Bagian ini memberikan panduan tentang skenario migrasi umum.
Alternatif operasi DDL
Aurora DSQL menyediakan alternatif modern untuk operasi DDL PostgreSQL tradisional:
- Pembuatan indeks
-
Gunakan al
CREATE INDEX ASYNCih-alihCREATE INDEXuntuk pembuatan indeks non-pemblokiran.Manfaat: pembuatan Zero-downtime indeks pada tabel besar.
- Penghapusan data
-
Gunakan al
DELETE FROM table_nameih-alihTRUNCATE.Alternatif: Untuk rekreasi meja lengkap, gunakan
DROP TABLEdiikuti olehCREATE TABLE. - Konfigurasi sistem
-
Aurora DSQL sepenuhnya dikelola, sehingga konfigurasi ditangani secara otomatis berdasarkan pola beban kerja. Gunakan AWS Management Console atau API untuk mengelola pengaturan cluster.
Manfaat: Tidak perlu penyetelan database atau manajemen parameter.
Pola desain skema
Sesuaikan pola PostgreSQL umum ini untuk kompatibilitas Aurora DSQL:
- Pola integritas referensial
-
Aurora DSQL mendukung hubungan tabel dan
JOINoperasi. Untuk integritas referensial, terapkan validasi di lapisan aplikasi Anda. Desain ini selaras dengan pola database terdistribusi modern di mana validasi lapisan aplikasi memberikan lebih banyak fleksibilitas dan menghindari kemacetan kinerja dari operasi bertingkat.Pola: M enerapkan pemeriksaan integritas referensial di lapisan aplikasi Anda menggunakan konvensi penamaan yang konsisten, logika validasi, dan batas transaksi. Banyak aplikasi skala tinggi lebih memilih pendekatan ini untuk kontrol yang lebih baik atas penanganan kesalahan dan kinerja.
- Penanganan data sementara
-
Gunakan CTE, subquery, atau tabel biasa dengan logika pembersihan alih-alih tabel sementara.
Alternatif: Buat tabel dengan nama khusus sesi dan bersihkan di aplikasi Anda.
Memahami perbedaan arsitektur
Arsitektur terdistribusi Aurora DSQL tanpa server sengaja berbeda dari PostgreSQL tradisional di beberapa area. Perbedaan ini memungkinkan manfaat utama Aurora DSQL dari kesederhanaan dan skala.
Model database yang disederhanakan
- Database tunggal per cluster
-
Aurora DSQL menyediakan satu database bawaan bernama
postgresper cluster.Tip migrasi: Jika aplikasi Anda menggunakan beberapa database, buat cluster Aurora DSQL terpisah untuk pemisahan logis, atau gunakan skema dalam satu cluster.
- Tidak ada tabel sementara
-
Untuk penanganan data sementara, Anda HARUS menggunakan ekspresi tabel umum (CTE) dan subquery, yang menyediakan alternatif fleksibel untuk kueri kompleks.
Alternatif: Gunakan CTE dengan
WITHklausa untuk kumpulan hasil sementara, atau tabel reguler dengan penamaan unik untuk data khusus sesi. - Manajemen penyimpanan otomatis
-
Aurora DSQL menghilangkan ruang tabel dan manajemen penyimpanan manual. Penyimpanan secara otomatis menskalakan dan dioptimalkan berdasarkan pola data Anda.
Manfaat: Tidak perlu memantau ruang disk, merencanakan alokasi penyimpanan, atau mengelola konfigurasi tablespace.
Pola aplikasi modern
Aurora DSQL mendorong pola pengembangan aplikasi modern yang meningkatkan pemeliharaan dan kinerja:
- Application-level logika alih-alih pemicu database
-
Untuk fungsionalitas seperti pemicu, terapkan logika berbasis peristiwa di lapisan aplikasi Anda.
Strategi migrasi: P indahkan logika pemicu ke kode aplikasi, gunakan arsitektur berbasis peristiwa dengan AWS layanan seperti EventBridge, atau terapkan jejak audit menggunakan logging aplikasi.
- Fungsi SQL untuk pengolahan data
-
Aurora DSQL mendukung SQL-based fungsi tetapi tidak bahasa prosedural seperti PL/pgSQL.
Alternatif: Gunakan fungsi SQL untuk transformasi data, atau pindahkan logika kompleks ke lapisan aplikasi Anda atau fungsi AWS Lambda.
- Kontrol konkurensi optimis alih-alih penguncian pesimis
-
Aurora DSQL menggunakan kontrol konkurensi optimis (OCC), pendekatan bebas kunci yang berbeda dari mekanisme penguncian database tradisional. Alih-alih memperoleh kunci yang memblokir transaksi lain, Aurora DSQL memungkinkan transaksi dilanjutkan tanpa memblokir dan mendeteksi konflik pada waktu komit. Ini menghilangkan kebuntuan dan mencegah transaksi lambat memblokir operasi lain.
Perbedaan utama: Ketika konflik terjadi, Aurora DSQL mengembalikan kesalahan serialisasi daripada membuat transaksi menunggu kunci. Ini mengharuskan aplikasi untuk mengimplementasikan logika coba ulang, mirip dengan menangani batas waktu kunci di database tradisional, tetapi konflik diselesaikan segera daripada menyebabkan penantian pemblokiran.
Pola desain: M enerapkan logika transaksi idempotent dengan mekanisme coba lagi. Rancang skema untuk meminimalkan pertikaian dengan menggunakan kunci utama acak dan menyebarkan pembaruan di seluruh rentang kunci Anda. Lihat perinciannya di Kontrol konkurensi di Aurora DSQL.
Penyederhanaan operasional
Aurora DSQL menghilangkan banyak tugas pemeliharaan database tradisional, mengurangi overhead operasional:
- Tidak diperlukan perawatan manual
-
Aurora DSQL secara otomatis mengelola pengoptimalan penyimpanan, pengumpulan statistik, dan penyetelan kinerja. Perintah pemeliharaan tradisional seperti
VACUUMditangani oleh sistem.Manfaat: Menghilangkan kebutuhan untuk jendela pemeliharaan database, penjadwalan vakum, dan penyetelan parameter sistem.
- Partisi dan penskalaan otomatis
-
Aurora DSQL secara otomatis mempartisi dan mendistribusikan data Anda berdasarkan pola akses. Gunakan UUID atau ID yang dihasilkan aplikasi untuk distribusi optimal.
Tip migrasi: Hapus logika partisi manual dan biarkan Aurora DSQL menangani distribusi data. Gunakan UUID atau ID yang dihasilkan aplikasi untuk distribusi optimal. Jika aplikasi Anda memerlukan pengenal berurutan, lihatUrutan dan kolom identitas.
Pertimbangan Aurora DSQL untuk kompatibilitas PostgreSQL
Aurora DSQL memiliki perbedaan dukungan fitur dari PostgreSQL yang dikelola sendiri yang memungkinkan arsitektur terdistribusi, operasi tanpa server, dan penskalaan otomatis. Sebagian besar aplikasi bekerja dalam perbedaan ini tanpa modifikasi.
Untuk pertimbangan umum, lihatPertimbangan untuk bekerja dengan Amazon Aurora DSQL. Untuk kuota dan batasan, lihatKuota cluster dan batas database di Amazon Aurora DSQL.
-
Aurora DSQL menggunakan database bawaan tunggal bernama
postgresper cluster. Untuk pemisahan logis, buat cluster Aurora DSQL terpisah atau gunakan skema dalam satu cluster. -
Bas
postgresis data menggunakan pengkodean UTF-8 karakter, yang menyediakan dukungan karakter internasional yang luas. -
Database hanya menggunakan
Ckolasi. -
Aurora DSQL digunakan
UTCsebagai zona waktu sistem. Postgres menyimpan semua tanggal dan waktu yang sadar zona waktu secara internal di UTC. Anda dapat mengatur parameterTimeZonekonfigurasi untuk mengonversi bagaimana itu ditampilkan ke klien dan berfungsi sebagai default untuk input klien yang akan digunakan server untuk mengonversi ke UTC secara internal. -
Tingkat isolasi transaksi ditetapkan di PostgreSQL
Repeatable Read. -
Transaksi memiliki kendala berikut:
-
Operasi DDL dan DML memerlukan transaksi terpisah
-
Transaksi hanya dapat mencakup 1 pernyataan DDL
-
Transaksi dapat memodifikasi hingga 3.000 baris, terlepas dari jumlah indeks sekunder
-
Batas 3.000 baris berlaku untuk semua pernyataan DML (
INSERT,,)UPDATEDELETE
-
-
Waktu koneksi database habis setelah 1 jam.
-
Aurora DSQL mengelola izin melalui hibah tingkat skema. Pengguna admin membuat skema menggunakan
CREATE SCHEMAdan memberikan akses menggunakanGRANT USAGE ON SCHEMA. Pengguna admin mengelola objek dalam skema publik, sementara pengguna non-admin membuat objek dalam skema yang dibuat pengguna untuk batas kepemilikan yang jelas. Untuk informasi selengkapnya, lihat Mengotorisasi peran database untuk menggunakan SQL dalam database Anda.
Butuh bantuan dengan migrasi?
Jika Anda menemukan fitur yang penting untuk migrasi Anda tetapi saat ini tidak didukung di Aurora DSQL, lihat Memberikan umpan balik tentang Amazon Aurora DSQL untuk informasi tentang cara berbagi umpan balik dengan AWS.