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 DSQL
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 una guida pratica per la migrazione dell'applicazione ad Aurora DSQL, inclusa la compatibilità del framework, i modelli di migrazione e le considerazioni sull'architettura.
Compatibilità con framework e ORM
Aurora DSQL utilizza il protocollo cablato PostgreSQL standard, garantendo la compatibilità con i driver e i framework PostgreSQL. Gli ORM più diffusi funzionano con Aurora DSQL con modifiche minime o nulle. Consulta le implementazioni Adattatori e dialetti di Aurora DSQL di riferimento e le integrazioni ORM disponibili.
Schemi 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 di PostgreSQL:
- Creazione di indici
-
Usalo
CREATE INDEX ASYNCal posto diCREATE INDEXper la creazione non bloccante dell'indice.Vantaggio: creazione di Zero-downtime indici su tabelle di grandi dimensioni.
- Rimozione dei dati
-
Usa
DELETE FROM table_nameal posto diTRUNCATE.Alternativa: per una ricreazione completa della tabella, utilizzare
DROP TABLEseguito daCREATE TABLE. - Configurazione del sistema
-
Aurora DSQL è completamente gestito, quindi la configurazione viene gestita automaticamente in base ai modelli di carico di lavoro. Usa la console di AWS gestione o l'API per gestire le impostazioni del cluster.
Vantaggio: non è necessario l'ottimizzazione del database o la gestione dei parametri.
Modelli di progettazione dello schema
Adatta questi modelli PostgreSQL comuni per la compatibilità con Aurora DSQL:
- Modelli di integrità referenziale
-
Aurora DSQL supporta le relazioni e le operazioni tra tabelle.
JOINPer l'integrità referenziale, implementate la convalida nel livello dell'applicazione. Questo design è in linea con i 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 delle transazioni coerenti. Molte applicazioni su larga scala preferiscono questo approccio per un migliore controllo sulla gestione degli errori e sulle prestazioni.
- Gestione temporanea dei dati
-
Usa CTE, 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 serverless distribuita di Aurora DSQL differisce intenzionalmente da PostgreSQL tradizionale in diverse aree. Queste differenze consentono i principali vantaggi di Aurora DSQL in termini di semplicità e scalabilità.
Modello di database semplificato
- Un unico database 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
-
Per la gestione temporanea dei dati, È NECESSARIO utilizzare espressioni di tabella comuni (CTE) e sottoquery, che forniscono alternative flessibili per query complesse.
Alternativa:
WITHutilizza CTE con clausole per set di risultati temporanei o tabelle normali con nomi univoci per i dati specifici della sessione. - Gestione automatica dell'archiviazione
-
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 applicativi moderni
Aurora DSQL incoraggia modelli di sviluppo di applicazioni moderni che migliorano la manutenibilità e le prestazioni:
- Application-level logica anziché trigger del database
-
Per una funzionalità simile a quella dei trigger, implementate la logica basata sugli eventi nel livello dell'applicazione.
Strategia di migrazione: sposta la logica dei trigger nel codice dell'applicazione, utilizza architetture basate sugli eventi con AWS servizi simili EventBridge o implementa audit trail utilizzando la registrazione delle applicazioni.
- Funzioni SQL per l'elaborazione dei dati
-
Aurora DSQL supporta SQL-based funzioni ma non linguaggi procedurali come. PL/pgSQL
Alternativa: usa le funzioni SQL per le trasformazioni dei dati o sposta la logica complessa sul livello dell'applicazione o sulle funzioni Lambda. AWS
- Controllo ottimistico della concorrenza anziché blocco pessimistico
-
Aurora DSQL utilizza il controllo ottimistico della concorrenza (OCC), un approccio privo di blocchi che differisce dai tradizionali meccanismi di blocco dei 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. Questo elimina i deadlock e impedisce alle transazioni lente di bloccare altre operazioni.
Differenza fondamentale: quando si verificano conflitti, Aurora DSQL restituisce un errore di serializzazione anziché far sì che le transazioni attendano 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 riprova. Progetta schemi per ridurre al minimo i conflitti utilizzando chiavi primarie casuali e distribuendo gli aggiornamenti su tutto l'intervallo di chiavi. Per informazioni dettagliate, vedi Controllo della concorrenza in Aurora DSQL.
Semplificazioni operative
Aurora DSQL elimina molte attività tradizionali di manutenzione del database, riducendo il sovraccarico operativo:
- Non è richiesta alcuna manutenzione manuale
-
Aurora DSQL gestisce automaticamente l'ottimizzazione dello storage, la raccolta di statistiche e l'ottimizzazione delle prestazioni. I comandi di manutenzione tradizionali, ad esempio,
VACUUMvengono gestiti dal sistema.Vantaggio: elimina la necessità di finestre di manutenzione del database, pianificazione del vuoto e ottimizzazione dei parametri di sistema.
- Partizionamento e ridimensionamento automatici
-
Aurora DSQL partiziona e distribuisce automaticamente i dati in base a modelli di accesso. Utilizzate gli UUID o gli ID generati dalle applicazioni per una distribuzione ottimale.
Suggerimento per la migrazione: rimuovi la logica di partizionamento manuale e lascia che Aurora DSQL gestisca la distribuzione dei dati. Usa gli UUID o gli ID generati dalle applicazioni per una distribuzione ottimale. Se la tua applicazione richiede identificatori sequenziali, consulta. Sequenze e colonne di identità
Considerazioni su Aurora DSQL rispetto alla compatibilità con PostgreSQL
Aurora DSQL supporta diverse funzionalità rispetto a PostgreSQL autogestito che ne consentono l'architettura distribuita, il funzionamento senza server e il ridimensionamento automatico. La maggior parte delle applicazioni funziona all'interno di 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
postgresper cluster. Per la separazione logica, create cluster Aurora DSQL separati o utilizzate schemi all'interno di un singolo cluster. -
Il
postgresdatabase utilizza la codifica dei UTF-8 caratteri, che fornisce un ampio supporto internazionale per i caratteri. -
Il database utilizza solo le regole di confronto
C. -
Aurora DSQL utilizza
UTCcome fuso orario del sistema. Postgres memorizza tutte le date e le ore che riconoscono il fuso orario internamente in UTC. È possibile impostare il parametro diTimeZoneconfigurazione per convertire il modo in cui viene visualizzato sul 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:
-
Le operazioni DDL e DML richiedono transazioni separate
-
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 gestisce le autorizzazioni tramite concessioni a livello di schema. Gli utenti amministratori creano schemi utilizzando e concedono l'accesso utilizzando.
CREATE SCHEMAGRANT USAGE ON SCHEMAGli utenti amministratori gestiscono gli oggetti nello schema pubblico, mentre gli utenti non amministratori creano oggetti in schemi creati dagli utenti per chiari confini di proprietà. Per ulteriori informazioni, consulta Autorizzazione dei ruoli del database a utilizzare SQL nel database.
Hai bisogno di aiuto per la migrazione?
Se trovi funzionalità fondamentali per la migrazione ma attualmente non supportate in Aurora DSQL, consulta Fornire feedback su Amazon Aurora DSQL le informazioni su come condividere il feedback con AWS.