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à.
Emula gli array PL/SQL associativi Oracle in Amazon Aurora PostgreSQL e Amazon RDS per PostgreSQL
Rajkumar Raghuwanshi, Bhanu Ganesh Gudivada e Sachin Khanna, Amazon Web Services
Riepilogo
Questo modello descrive come emulare gli array PL/SQL associativi Oracle con posizioni di indice vuote in ambienti Amazon Aurora PostgreSQL e Amazon RDS for PostgreSQL
Forniamo un'alternativa PostgreSQL all'aws_oracle_ext
utilizzo di funzioni per la gestione delle posizioni di indice vuote durante la migrazione di un database Oracle. Questo modello utilizza una colonna aggiuntiva per memorizzare le posizioni degli indici e mantiene la gestione degli array sparsi da parte di Oracle incorporando funzionalità PostgreSQL native.
Oracle
In Oracle, le raccolte possono essere inizializzate come vuote e popolate utilizzando il metodo EXTEND
collection, che aggiunge elementi all'array. NULL
Quando si lavora con array PL/SQL associativi indicizzati daPLS_INTEGER
, il EXTEND
metodo aggiunge NULL
elementi in sequenza, ma gli elementi possono anche essere inizializzati in posizioni di indice non sequenziali. Qualsiasi posizione dell'indice che non sia inizializzata in modo esplicito rimane vuota.
Questa flessibilità consente strutture di array sparse in cui gli elementi possono essere popolati in posizioni arbitrarie. Quando si esegue un'iterazione tra le raccolte utilizzando un FOR LOOP
with FIRST
e un LAST
bounds, vengono elaborati solo gli elementi inizializzati (con NULL
o con un valore definito), mentre le posizioni vuote vengono saltate.
PostgreSQL (Amazon Aurora e Amazon RDS)
PostgreSQL gestisce i valori vuoti in modo diverso dai valori. NULL
Memorizza i valori vuoti come entità distinte che utilizzano un byte di archiviazione. Quando un array ha valori vuoti, PostgreSQL assegna posizioni di indice sequenziali proprio come valori non vuoti. Ma l'indicizzazione sequenziale richiede un'elaborazione aggiuntiva perché il sistema deve scorrere attraverso tutte le posizioni indicizzate, comprese quelle vuote. Ciò rende la creazione di array tradizionali inefficiente per set di dati sparsi.
AWS Schema Conversion Tool
Il AWS Schema Conversion Tool (AWS SCT) in genere gestisce le Oracle-to-PostgreSQL migrazioni utilizzando le funzioni. aws_oracle_ext
In questo modello, proponiamo un approccio alternativo che utilizza le funzionalità native di PostgreSQL, che combina i tipi di array PostgreSQL con una colonna aggiuntiva per l'archiviazione delle posizioni degli indici. Il sistema può quindi eseguire iterazioni tra gli array utilizzando solo la colonna dell'indice.
Prerequisiti e limitazioni
Prerequisiti
Un attivo. Account AWS
Un utente AWS Identity and Access Management (IAM) con autorizzazioni di amministratore.
Un'istanza compatibile con Amazon RDS o Aurora PostgreSQL.
Una conoscenza di base dei database relazionali.
Limitazioni
Alcuni Servizi AWS non sono disponibili in tutti Regioni AWS. Per la disponibilità per regione, vedi Servizi AWS per regione
. Per endpoint specifici, consulta la pagina Endpoint e quote del servizio e scegli il link relativo al servizio.
Versioni del prodotto
Questo modello è stato testato con le seguenti versioni:
Amazon Aurora PostgreSQL 13.3
Amazon RDS per PostgreSQL 13.3
AWS SCT 1.0.674
Oracle12c EE 12.2
Architettura
Stack tecnologico di origine
Database Oracle locale
Stack tecnologico Target
Amazon Aurora PostgreSQL
Amazon RDS per PostgreSQL
Architettura di destinazione

Il diagramma mostra:
Un'istanza di database Amazon RDS for Oracle di origine
Un' EC2 istanza Amazon AWS SCT per convertire le funzioni Oracle nell'equivalente di PostgreSQL
Un database di destinazione compatibile con Amazon Aurora PostgreSQL
Strumenti
Servizi AWS
Amazon Aurora è un motore di database relazionale completamente gestito creato per il cloud e compatibile con MySQL e PostgreSQL.
Amazon Aurora PostgreSQL Compatible Edition è un motore di database relazionale completamente gestito e conforme ad ACID che ti aiuta a configurare, gestire e scalare le distribuzioni PostgreSQL.
Amazon Elastic Compute Cloud (Amazon EC2) fornisce capacità di elaborazione scalabile in. Cloud AWS Puoi avviare tutti i server virtuali di cui hai bisogno e dimensionarli rapidamente.
Amazon Relational Database Service (Amazon RDS) ti aiuta a configurare, gestire e scalare un database relazionale in. Cloud AWS
Amazon Relational Database Service (Amazon RDS) per Oracle ti aiuta a configurare, gestire e scalare un database relazionale Oracle in. Cloud AWS
Amazon Relational Database Service (Amazon RDS) per PostgreSQL ti aiuta a configurare, gestire e scalare un database relazionale PostgreSQL in. Cloud AWS
AWS Schema Conversion Tool (AWS SCT) supporta migrazioni di database eterogenee convertendo automaticamente lo schema del database di origine e la maggior parte del codice personalizzato in un formato compatibile con il database di destinazione.
Altri strumenti
Oracle SQL Developer
è un ambiente di sviluppo integrato che semplifica lo sviluppo e la gestione dei database Oracle nelle implementazioni tradizionali e basate sul cloud. pgAdmin
è uno strumento di gestione open source per PostgreSQL. Fornisce un'interfaccia grafica che consente di creare, gestire e utilizzare oggetti di database. In questo modello, pgAdmin si connette all'istanza del database RDS per PostgreSQL e interroga i dati. In alternativa, puoi usare il client da riga di comando psql.
Best practice
Verifica i limiti dei set di dati e gli scenari periferici.
Prendi in considerazione l'implementazione della gestione degli errori per le condizioni out-of-bounds dell'indice.
Ottimizza le query per evitare la scansione di set di dati sparsi.
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea un PL/SQL blocco sorgente in Oracle. | Crea un PL/SQL blocco sorgente in Oracle che utilizza il seguente array associativo:
| DBA |
Esegui il PL/SQL blocco. | Esegui il PL/SQL blocco sorgente in Oracle. Se ci sono degli spazi tra i valori di indice di un array associativo, in tali spazi non viene memorizzato alcun dato. Ciò consente al ciclo Oracle di scorrere solo attraverso le posizioni dell'indice. | DBA |
Esamina l'output. | Cinque elementi sono stati inseriti nell'array (
| DBA |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea un PL/pgSQL blocco di destinazione in PostgreSQL. | Crea un PL/pgSQL blocco di destinazione in PostgreSQL che utilizza il seguente array associativo:
| DBA |
Esegui il PL/pgSQL blocco. | Esegui il PL/pgSQL blocco di destinazione in PostgreSQL. Se ci sono degli spazi tra i valori dell'indice di un array associativo, nessun dato viene memorizzato in tali spazi. Ciò consente al ciclo Oracle di scorrere solo attraverso le posizioni dell'indice. | DBA |
Esamina l'output. | La lunghezza dell'array è maggiore di 5 perché
| DBA |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea un PL/pgSQL blocco di destinazione con un array e un tipo definito dall'utente. | Per ottimizzare le prestazioni e soddisfare le funzionalità di Oracle, possiamo creare un tipo definito dall'utente che memorizza sia le posizioni dell'indice che i dati corrispondenti. Questo approccio riduce le iterazioni non necessarie mantenendo associazioni dirette tra indici e valori.
| DBA |
Esegui il PL/pgSQL blocco. | Esegui il PL/pgSQL blocco bersaglio. Se ci sono degli spazi tra i valori dell'indice di un array associativo, in tali spazi non viene memorizzato alcun dato. Ciò consente al ciclo Oracle di scorrere solo attraverso le posizioni dell'indice. | DBA |
Esamina l'output. | Come illustrato nell'output seguente, il tipo definito dall'utente memorizza solo gli elementi di dati popolati, il che significa che la lunghezza dell'array corrisponde al numero di valori. Di conseguenza,
| DBA |
Risorse correlate
AWS documentazione
Altra documentazione