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, gabungan, dan operasi DHTML 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. ORMs Pekerjaan paling populer 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 PostgreSQL DDL tradisional:
- Pembuatan indeks
-
Gunakan
CREATE INDEX ASYNCalih-alihCREATE INDEXuntuk pembuatan indeks non-pemblokiran.Manfaat: Pembuatan indeks nol-downtime pada tabel besar.
- Penghapusan data
-
Gunakan
DELETE FROM table_namesebagai penggantiTRUNCATE.Alternatif: Untuk rekreasi meja lengkap, gunakan
DROP TABLEdiikuti olehCREATE TABLE. - Konfigurasi sistem
-
Aurora DSQL tidak mendukung
ALTER SYSTEMperintah karena sistem sepenuhnya dikelola. Konfigurasi ditangani secara otomatis berdasarkan pola beban kerja.Manfaat: Tidak perlu penyetelan basis data atau manajemen parameter.
Pola desain skema
Sesuaikan pola PostgreSQL umum ini untuk kompatibilitas Aurora DSQL:
- Urutan untuk kunci
-
Gunakan UUIDs atau kunci komposit alih-alih urutan penambahan otomatis. Urutan penambahan otomatis menyebabkan sejumlah besar konflik dalam sistem terdistribusi karena banyak penulis mencoba memperbarui data yang sama. UUIDs memberikan fungsi yang sama tetapi tidak memerlukan koordinasi.
Contoh:
id UUID PRIMARY KEY DEFAULT gen_random_uuid() - Pola integritas referensial
-
Aurora DSQL mendukung hubungan dan
JOINoperasi tabel tetapi belum memberlakukan batasan kunci asing. Pilihan desain ini selaras dengan pola database terdistribusi modern di mana validasi lapisan aplikasi memberikan lebih banyak fleksibilitas dan menghindari kemacetan kinerja dari operasi cascading.Pola: Menerapkan 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 CTEs, subkueri, atau tabel biasa dengan logika pembersihan, bukan tabel sementara.
Alternatif: Buat tabel dengan nama khusus sesi dan bersihkan di aplikasi Anda.
Memahami perbedaan arsitektur
Arsitektur Aurora DSQL yang didistribusikan dan tanpa server sengaja berbeda dari PostgreSQL tradisional di beberapa area. Perbedaan ini memungkinkan manfaat utama Aurora DSQL dari kesederhanaan dan skala.
Model basis data yang disederhanakan
- Database tunggal per cluster
-
Aurora DSQL menyediakan satu database built-in bernama per cluster.
postgresTip 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
-
Tabel sementara belum didukung di Aurora DSQL. Ekspresi tabel umum (CTEs) dan subquery dapat digunakan sebagai alternatif untuk query kompleks.
Alternatif: Gunakan CTEs dengan
WITHklausa untuk set hasil sementara, atau tabel reguler dengan penamaan unik untuk data khusus sesi. - Manajemen penyimpanan otomatis
-
Aurora DSQL menghilangkan ruang meja dan manajemen penyimpanan manual. Penyimpanan secara otomatis menskalakan dan mengoptimalkan 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:
- Logika tingkat aplikasi alih-alih pemicu basis data
-
Aurora DSQL tidak mendukung pemicu.
Strategi migrasi: Pindahkan logika pemicu ke kode aplikasi, gunakan arsitektur berbasis peristiwa dengan AWS layanan seperti EventBridge, atau terapkan jejak audit menggunakan pencatatan aplikasi.
- Fungsi SQL untuk pemrosesan data
-
Aurora DSQL mendukung fungsi berbasis SQL tetapi tidak bahasa prosedural seperti PL/PGSQL.
Alternatif: Gunakan fungsi SQL untuk transformasi data, atau pindahkan logika kompleks ke lapisan aplikasi atau fungsi Lambda AWS Anda.
- Kontrol konkurensi yang optimis alih-alih penguncian pesimis
-
Aurora DSQL menggunakan optimistic concurrency control (OCC), pendekatan bebas kunci yang berbeda dari mekanisme penguncian basis data tradisional. Alih-alih memperoleh kunci yang memblokir transaksi lain, Aurora DSQL memungkinkan transaksi untuk 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 menerapkan logika coba lagi, mirip dengan menangani batas waktu kunci dalam database tradisional, tetapi konflik diselesaikan segera daripada menyebabkan pemblokiran menunggu.
Pola desain: Menerapkan logika transaksi idempoten dengan mekanisme coba lagi. Rancang skema untuk meminimalkan pertengkaran dengan menggunakan kunci primer acak dan menyebarkan pembaruan di seluruh rentang kunci Anda. Lihat perinciannya di Kontrol konkurensi di Aurora DSQL.
- Hubungan dan integritas referensial
-
Aurora DSQL mendukung hubungan kunci asing antar tabel, termasuk
JOINoperasi, tetapi kendala kunci asing belum didukung. Meskipun menegakkan integritas referensial dapat berharga, operasi cascading (seperti penghapusan cascading) dapat menciptakan masalah kinerja yang tidak terduga — misalnya, menghapus pesanan dengan 1.000 item baris menjadi transaksi 1.001-baris. Banyak pelanggan menghindari kendala kunci asing karena alasan ini.Pola desain: Menerapkan pemeriksaan integritas referensial di lapisan aplikasi Anda, gunakan pola konsistensi akhirnya, atau manfaatkan AWS layanan untuk validasi data.
Penyederhanaan operasional
Aurora DSQL menghilangkan banyak tugas pemeliharaan basis data tradisional, mengurangi overhead operasional:
- Tidak diperlukan perawatan manual
-
Aurora DSQL tidak memerlukan
VACUUM,,TRUNCATEatau perintah.ALTER SYSTEMSistem secara otomatis mengelola pengoptimalan penyimpanan, pengumpulan statistik, dan penyetelan kinerja.Manfaat: Menghilangkan kebutuhan akan jendela pemeliharaan basis data, penjadwalan vakum, dan penyetelan parameter sistem.
- Partisi dan penskalaan otomatis
-
Aurora DSQL secara otomatis mempartisi dan mendistribusikan data Anda berdasarkan pola akses. Partisi dan urutan manual tidak diperlukan.
Tip migrasi: Hapus logika partisi manual dan biarkan Aurora DSQL menangani distribusi data. Gunakan UUIDs atau aplikasi yang dihasilkan IDs alih-alih urutan.
Migrasi yang dibantu AI
Anda dapat memanfaatkan alat AI untuk membantu memigrasikan basis kode Anda ke Aurora DSQL:
Menggunakan Kiro untuk bantuan migrasi
Agen pengkodean seperti Kiro
-
Analisis skema: Unggah file skema yang ada dan minta Kiro mengidentifikasi potensi masalah kompatibilitas dan menyarankan alternatif
-
Transformasi kode: Berikan kode aplikasi Anda dan minta Kiro untuk membantu memfaktorkan ulang logika pemicu, mengganti urutan dengan UUIDs, atau memodifikasi pola transaksi
-
Perencanaan migrasi: Minta Kiro untuk membuat rencana step-by-step migrasi berdasarkan arsitektur aplikasi spesifik Anda
Contoh petunjuk Kiro:
"Analyze this PostgreSQL schema for DSQL compatibility and suggest alternatives for any unsupported features" "Help me refactor this trigger function into application-level logic for DSQL migration" "Create a migration checklist for moving my Django application from PostgreSQL to DSQL"
Server MCP Aurora DSQL
Server Aurora DSQL Model Context Protocol (MCP) memungkinkan asisten AI seperti Claude untuk terhubung langsung ke cluster Aurora DSQL Anda dan mencari dokumentasi Aurora DSQL. Ini memungkinkan AI untuk:
-
Analisis skema yang ada dan sarankan perubahan migrasi
-
Uji kueri dan verifikasi kompatibilitas selama migrasi
-
Berikan up-to-date panduan yang akurat berdasarkan dokumentasi Aurora DSQL terbaru
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 built-in tunggal bernama.
postgresAnda tidak dapat membuat database tambahan atau mengganti nama atau menjatuhkan database.postgres -
postgresBasis data menggunakan pengkodean karakter UTF-8. Anda tidak dapat mengubah pengkodean server. -
Basis data hanya
Cmenggunakan pemeriksaan. -
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 sebagai berikut:
-
Transaksi tidak dapat mencampur operasi DDL dan DML
-
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 DHTML (,,)
INSERTUPDATEDELETE
-
-
Waktu koneksi database habis setelah 1 jam.
-
Aurora DSQL saat ini tidak membiarkan Anda menjalankan.
GRANT [permission] ON DATABASEJika Anda mencoba menjalankan pernyataan itu, Aurora DSQL mengembalikan pesan kesalahan.ERROR: unsupported object type in GRANT -
Aurora DSQL tidak mengizinkan peran pengguna non-admin untuk menjalankan perintah.
CREATE SCHEMAAnda tidak dapat menjalankanGRANT [permission] on DATABASEperintah dan memberikanCREATEizin pada database. Jika peran pengguna non-admin mencoba membuat skema, Aurora DSQL kembali dengan pesan kesalahan.ERROR: permission denied for database postgres -
Pengguna non-admin tidak dapat membuat objek dalam skema publik. Hanya pengguna admin yang dapat membuat objek dalam skema publik. Peran pengguna admin memiliki izin untuk memberikan akses baca, tulis, dan modifikasi ke objek ini kepada pengguna non-admin, tetapi tidak dapat memberikan
CREATEizin ke skema publik itu sendiri. Pengguna non-admin harus menggunakan skema yang dibuat pengguna yang berbeda untuk pembuatan objek.
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.