Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Migrazione da PostgreSQL ad Aurora SQL
Aurora DSQL è progettata per essere compatibile con PostgreSQL e supporta funzionalità relazionali di base come transazioni ACID, indici secondari, join e operazioni DML standard. La maggior parte delle applicazioni PostgreSQL esistenti può migrare ad Aurora DSQL con modifiche minime.
Questa sezione fornisce linee guida pratiche per la migrazione dell'applicazione ad Aurora DSQL, tra cui compatibilità del framework, modelli di migrazione e considerazioni sull'architettura.
Compatibilità con framework e ORM
Aurora DSQL utilizza il protocollo wire PostgreSQL standard, garantendo la compatibilità con i driver e i framework PostgreSQL. I più diffusi ORMs funzionano con Aurora DSQL con modifiche minime o nulle. Vedi Adattatori e dialetti di Aurora DSQL per le implementazioni di riferimento e le integrazioni ORM disponibili.
Modelli di migrazione comuni
Durante la migrazione da PostgreSQL ad Aurora DSQL, alcune funzionalità funzionano in modo diverso o hanno una sintassi alternativa. Questa sezione fornisce indicazioni sugli scenari di migrazione più comuni.
Alternative operative DDL
Aurora DSQL offre alternative moderne alle tradizionali operazioni DDL PostgreSQL:
- Creazione di indici
-
Utilizzatelo
CREATE INDEX ASYNCal posto di quelloCREATE INDEXper la creazione di indici non bloccanti.Vantaggio: creazione di indici senza tempi di inattività su tabelle di grandi dimensioni.
- Rimozione dei dati
-
Utilizzare
DELETE FROM table_nameal posto diTRUNCATE.Alternativa: per una completa ricreazione a tavola, utilizzare
DROP TABLEseguito daCREATE TABLE. - Configurazione del sistema
-
Aurora DSQL non supporta
ALTER SYSTEMi comandi perché il sistema è completamente gestito. La configurazione viene gestita automaticamente in base ai modelli di carico di lavoro.Vantaggio: non è necessario ottimizzare il database o gestire i parametri.
Modelli di progettazione dello schema
Adatta questi modelli PostgreSQL comuni per la compatibilità con Aurora SQL:
- Sequenze per chiavi
-
Usa le UUIDs nostre chiavi composite invece di sequenze ad incremento automatico. Le sequenze ad incremento automatico portano a un'elevata quantità di conflitti in un sistema distribuito poiché più autori cercano di aggiornare gli stessi dati. UUIDs forniscono la stessa funzione ma non richiedono alcun coordinamento.
Esempio:
id UUID PRIMARY KEY DEFAULT gen_random_uuid() - modelli di integrità referenziale
-
Aurora DSQL supporta le relazioni e le
JOINoperazioni tra tabelle ma non impone ancora vincoli di chiave esterna. Questa scelta progettuale si allinea ai moderni modelli di database distribuiti in cui la convalida a livello di applicazione offre maggiore flessibilità ed evita i colli di bottiglia delle prestazioni dovuti alle operazioni a cascata.Modello: implementa i controlli di integrità referenziale a livello di applicazione utilizzando convenzioni di denominazione, logica di convalida e limiti di transazione coerenti. Molte applicazioni su larga scala preferiscono questo approccio per un migliore controllo sulla gestione degli errori e sulle prestazioni.
- Gestione temporanea dei dati
-
Utilizza CTEs sottoquery o tabelle normali con logica di pulizia anziché tabelle temporanee.
Alternativa: crea tabelle con nomi specifici della sessione e puliscile nell'applicazione.
Comprendere le differenze architettoniche
L'architettura distribuita e serverless di Aurora DSQL si differenzia intenzionalmente da PostgreSQL tradizionale in diverse aree. Queste differenze consentono i principali vantaggi di semplicità e scalabilità di Aurora DSQL.
Modello di database semplificato
- Database singolo per cluster
-
Aurora DSQL fornisce un database integrato denominato
postgresper cluster.Suggerimento per la migrazione: se l'applicazione utilizza più database, create cluster Aurora DSQL separati per la separazione logica o utilizzate schemi all'interno di un singolo cluster.
- Nessuna tabella temporanea
-
Le tabelle temporanee non sono ancora supportate in Aurora DSQL. Le espressioni di tabella comuni (CTEs) e le sottoquery possono essere utilizzate come alternativa alle query complesse.
Alternativa: da utilizzare CTEs con
WITHclausole per set di risultati temporanei o tabelle normali con denominazione univoca per dati specifici della sessione. - Gestione automatica dello storage
-
Aurora DSQL elimina i tablespace e la gestione manuale dello storage. Lo storage si ridimensiona e si ottimizza automaticamente in base ai modelli di dati.
Vantaggio: non è necessario monitorare lo spazio su disco, pianificare l'allocazione dello storage o gestire le configurazioni dei tablespace.
Modelli di applicazione moderni
Aurora DSQL incoraggia modelli di sviluppo di applicazioni moderni che migliorano la manutenibilità e le prestazioni:
- Logica a livello di applicazione anziché trigger di database
-
Aurora DSQL non supporta i trigger.
Strategia di migrazione: sposta la logica dei trigger nel codice dell'applicazione, usa architetture basate sugli eventi con AWS servizi come EventBridge o implementa gli audit trail utilizzando la registrazione delle applicazioni.
- Funzioni SQL per l'elaborazione dei dati
-
Aurora DSQL supporta funzioni basate su SQL ma non linguaggi procedurali come PL/pgSQL.
Alternativa: utilizza le funzioni SQL per le trasformazioni dei dati o sposta la logica complessa sul livello dell'applicazione o sulle funzioni AWS Lambda.
- Controllo ottimistico della concorrenza anziché blocco pessimistico
-
Aurora DSQL utilizza il controllo ottimistico della concorrenza (OCC), un approccio privo di blocchi che si differenzia dai tradizionali meccanismi di blocco del database. Invece di acquisire blocchi che bloccano altre transazioni, Aurora DSQL consente alle transazioni di procedere senza blocchi e rileva i conflitti al momento del commit. Ciò elimina le situazioni di stallo e impedisce che le transazioni lente blocchino altre operazioni.
Differenza fondamentale: quando si verificano conflitti, Aurora DSQL restituisce un errore di serializzazione anziché far attendere le transazioni per i blocchi. Ciò richiede che le applicazioni implementino una logica di ripetizione, simile alla gestione dei timeout di blocco nei database tradizionali, ma i conflitti vengono risolti immediatamente anziché causare attese di blocco.
Modello di progettazione: implementa una logica di transazione idempotente con meccanismi di ripetizione. Progetta schemi per ridurre al minimo i conflitti utilizzando chiavi primarie casuali e distribuendo gli aggiornamenti su tutta la gamma di chiavi. Per informazioni dettagliate, vedi Controllo della concorrenza in Aurora DSQL.
- Relazioni e integrità referenziale
-
Aurora DSQL supporta le relazioni con chiavi esterne tra le tabelle, comprese le
JOINoperazioni, ma i vincoli di chiave esterna non sono ancora supportati. Sebbene l'applicazione dell'integrità referenziale possa essere utile, le operazioni a cascata (come le eliminazioni a cascata) possono creare problemi di prestazioni imprevisti, ad esempio l'eliminazione di un ordine con 1.000 voci diventa una transazione di 1.001 righe. Per questo motivo, molti clienti evitano i vincoli relativi alle chiavi esterne.Modello di progettazione: implementa i controlli di integrità referenziale a livello applicativo, utilizza eventuali modelli di coerenza o sfrutta AWS i servizi per la convalida dei dati.
Semplificazioni operative
Aurora DSQL elimina molte attività tradizionali di manutenzione del database, riducendo il sovraccarico operativo:
- Non è richiesta alcuna manutenzione manuale
-
Aurora SQL non richiede
VACUUMcomandiTRUNCATE.ALTER SYSTEMIl sistema gestisce automaticamente l'ottimizzazione dello storage, la raccolta di statistiche e l'ottimizzazione delle prestazioni.Vantaggio: elimina la necessità di finestre di manutenzione del database, pianificazione a vuoto e ottimizzazione dei parametri di sistema.
- Partizionamento e scalabilità automatici
-
Aurora DSQL partiziona e distribuisce automaticamente i dati in base ai modelli di accesso. Il partizionamento e le sequenze manuali non sono necessari.
Suggerimento per la migrazione: rimuovete la logica di partizionamento manuale e lasciate che Aurora DSQL gestisca la distribuzione dei dati. Usa UUIDs o generati dall'applicazione anziché sequenze IDs .
Migrazione assistita dall'intelligenza artificiale
Puoi sfruttare gli strumenti di intelligenza artificiale per aiutarti a migrare la tua codebase su Aurora DSQL:
Utilizzo di Kiro per l'assistenza alla migrazione
Gli agenti di codifica come Kiro
-
Analisi dello schema: carica i file di schema esistenti e chiedi a Kiro di identificare potenziali problemi di compatibilità e suggerire alternative
-
Trasformazione del codice: fornisci il codice dell'applicazione e chiedi a Kiro di aiutarti a rifattorizzare la logica di attivazione, sostituire le sequenze con o modificare i modelli di UUIDs transazione
-
Pianificazione della migrazione: chiedi a Kiro di creare un piano di step-by-step migrazione basato sulla tua architettura applicativa specifica
Esempi di istruzioni 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
Il server Aurora DSQL Model Context Protocol (MCP) consente agli assistenti AI come Claude di connettersi direttamente al cluster Aurora DSQL e di cercare la documentazione di Aurora DSQL. Ciò consente all'IA di:
-
Analizza lo schema esistente e suggerisci modifiche alla migrazione
-
Esegui il test delle query e verifica la compatibilità durante la migrazione
-
Fornisci up-to-date linee guida accurate basate sulla più recente documentazione di Aurora DSQL
Considerazioni su Aurora DSQL rispetto alla compatibilità con PostgreSQL
Aurora DSQL presenta differenze nel supporto delle funzionalità rispetto a PostgreSQL autogestito che ne consentono l'architettura distribuita, il funzionamento senza server e la scalabilità automatica. La maggior parte delle applicazioni funziona entro queste differenze senza modifiche.
Per le considerazioni generali, consulta Considerazioni sull’utilizzo di Amazon Aurora DSQL. Per quote e limiti, consulta Quote di cluster e limiti del database in Amazon Aurora DSQL.
-
Aurora DSQL utilizza un unico database integrato denominato
postgres. Non è possibile creare database aggiuntivi o rinominare o eliminare il databasepostgres. -
Il database
postgresutilizza la codifica caratteri UTF-8. Non è possibile modificare la codifica del server. -
Il database utilizza solo le regole di confronto
C. -
Aurora DSQL utilizza
UTCcome fuso orario del sistema. Postgres memorizza internamente tutte le date e gli orari in base al fuso orario in UTC. È possibile impostare il parametro diTimeZoneconfigurazione per convertire il modo in cui viene visualizzato al client e fungere da impostazione predefinita per l'input del client che il server utilizzerà per la conversione in UTC internamente. -
Il livello di isolamento delle transazioni è fisso su PostgreSQL
Repeatable Read. -
Le transazioni sono soggette ai seguenti vincoli:
-
Una transazione non può combinare operazioni DDL e DML
-
Una transazione può includere solo 1 istruzione DDL
-
Una transazione può modificare fino a 3.000 righe, indipendentemente dal numero di indici secondari
-
Il limite di 3.000 righe si applica a tutte le istruzioni DML (
INSERT,UPDATE,DELETE)
-
-
Le connessioni al database scadono dopo 1 ora.
-
Aurora DSQL attualmente non consente l’esecuzione di
GRANT [permission] ON DATABASE. Se si tenta di eseguire tale istruzione, Aurora DSQL restituisce il messaggio di erroreERROR: unsupported object type in GRANT. -
Aurora DSQL non consente ai ruoli utente non amministratori di eseguire il comando
CREATE SCHEMA. Non è possibile eseguire il comandoGRANT [permission] on DATABASEe concedere le autorizzazioniCREATEsul database. Se un ruolo utente non amministratore tenta di creare uno schema, Aurora DSQL restituisce il messaggio di erroreERROR: permission denied for database postgres. -
Gli utenti non amministratori non possono creare oggetti nello schema pubblico. Solo gli utenti amministratori possono creare oggetti nello schema pubblico. Il ruolo utente amministratore dispone delle autorizzazioni per concedere l’accesso in lettura, scrittura e modifica a questi oggetti a utenti non amministratori, ma non può concedere le autorizzazioni
CREATEsullo schema pubblico stesso. Gli utenti non amministratori devono utilizzare schemi diversi creati dall’utente per la creazione di oggetti.
Hai bisogno di aiuto con la migrazione?
Se riscontri funzionalità fondamentali per la migrazione ma attualmente non supportate in Aurora DSQL, consulta Fornire feedback su Amazon Aurora DSQL per informazioni su come condividere il feedback con AWS.