Migrasi dari PostgreSQL ke Aurora DSQL - Amazon Aurora DSQL

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 ASYNC alih-alih CREATE INDEX untuk pembuatan indeks non-pemblokiran.

Manfaat: Pembuatan indeks nol-downtime pada tabel besar.

Penghapusan data

Gunakan DELETE FROM table_name sebagai penggantiTRUNCATE.

Alternatif: Untuk rekreasi meja lengkap, gunakan DROP TABLE diikuti 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 setelan klaster.

Manfaat: Tidak perlu penyetelan basis data atau manajemen parameter.

Pola desain skema

Sesuaikan pola PostgreSQL umum ini untuk kompatibilitas Aurora DSQL:

Pola integritas referensial

Aurora DSQL mendukung hubungan tabel dan operasi. JOIN 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 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. postgres

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 (CTEs) dan subkueri, yang menyediakan alternatif fleksibel untuk kueri kompleks.

Alternatif: Gunakan CTEs dengan WITH klausa 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

Untuk fungsionalitas seperti pemicu, terapkan logika berbasis peristiwa di lapisan aplikasi Anda.

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 mengimplementasikan 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 operasi. JOIN Untuk integritas referensial, terapkan validasi di lapisan aplikasi Anda. 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 secara otomatis mengelola pengoptimalan penyimpanan, pengumpulan statistik, dan penyetelan kinerja. Perintah pemeliharaan tradisional seperti VACUUM ditangani oleh sistem.

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. Penggunaan UUIDs atau aplikasi yang dihasilkan IDs untuk distribusi yang optimal.

Tip migrasi: Hapus logika partisi manual dan biarkan Aurora DSQL menangani distribusi data. Penggunaan UUIDs atau aplikasi yang dihasilkan IDs untuk distribusi yang optimal. Jika aplikasi Anda memerlukan pengidentifikasi berurutan, lihat. Urutan 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 klaster dan batas basis data di Amazon Aurora DSQL.

  • Aurora DSQL menggunakan database built-in tunggal bernama per cluster. postgres Untuk pemisahan logis, buat cluster Aurora DSQL terpisah atau gunakan skema dalam satu cluster.

  • postgresBasis data menggunakan pengkodean karakter UTF-8, yang menyediakan dukungan karakter internasional yang luas.

  • Basis data hanya C menggunakan pemeriksaan.

  • Aurora DSQL digunakan UTC sebagai zona waktu sistem. Postgres menyimpan semua tanggal dan waktu yang sadar zona waktu secara internal di UTC. Anda dapat mengatur parameter TimeZone konfigurasi 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 PostgreSQLRepeatable Read.

  • Transaksi memiliki kendala sebagai 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 DHTML (,,) INSERT UPDATE DELETE

  • Waktu koneksi database habis setelah 1 jam.

  • Aurora DSQL mengelola izin melalui hibah tingkat skema. Pengguna admin membuat skema menggunakan CREATE SCHEMA dan 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.

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.