Distribuisci database Oracle scalabili linearmente, con errori e partizionati su Oracle Cloud Infrastructure

Quando è necessario un database che supporti scalabilità estrema con isolamento completo dei dati per le applicazioni OLTP a livello enterprise, distribuire le istanze con partizionamento orizzontale di Oracle Database in una topologia resistente agli errori su Oracle Cloud Infrastructure.

Sharding è un'architettura a livello di dati in cui i dati vengono partizionati orizzontalmente in database indipendenti, denominati partizioni, ognuna in esecuzione su un server separato con le proprie risorse CPU, memoria e disco. Questo approccio non condiviso elimina singoli punti di guasto a livello di infrastruttura. Un pool di partizioni viene presentato al livello applicazione come un singolo database logico, denominato database con partizionamento orizzontale. Le applicazioni che hanno una strategia di distribuzione dei dati ben definita e accedono ai dati principalmente utilizzando una chiave di partizionamento orizzontale possono sfruttare un livello di dati partizionato.

Architettura

Le architetture riportate di seguito mostrano topologie Oracle Database 19c con partizionamento orizzontale in Oracle Cloud Infrastructure, distribuite utilizzando lo stack Oracle Database Sharding fornito in Oracle Cloud Marketplace.

Le architetture dispongono di risorse ridondanti in ogni livello (shard director, catalogo e partizioni), per garantire la massima disponibilità del database partizionato.

Distribuzione su più domini di disponibilità

Questa architettura mostra un database con partizionamento orizzontale distribuito su due domini di disponibilità in un'area di Oracle Cloud Infrastructure. Segue una descrizione dell'immagine shards-single-region.png
Descrizione dell'immagine shards-single-region.png

Distribuzione in un singolo dominio di disponibilità

Questa architettura mostra un database con partizionamento orizzontale distribuito nei domini di errore all'interno di un singolo dominio di disponibilità in un'area di Oracle Cloud Infrastructure. Segue una descrizione dell'immagine shards-single-ad.png
Descrizione dell'immagine shards-single-ad.png

Nell'architettura sono illustrati i componenti riportati di seguito.

  • Area

    Un'area Oracle Cloud Infrastructure è un'area geografica localizzata che contiene uno o più data center, denominati domini di disponibilità. Le regioni sono indipendenti da altre regioni, e vaste distanze possono separarle (tra paesi o addirittura continenti).

    Tutte le risorse di questa architettura vengono distribuite in un compartimento specificato e all'interno di un'unica area di Oracle Cloud Infrastructure.

  • Domini di disponibilità

    I domini di disponibilità sono data center indipendenti e autonomi all'interno di un'area. Le risorse fisiche in ogni dominio di disponibilità vengono isolate dalle risorse negli altri domini di disponibilità, il che fornisce tolleranza agli errori. I domini di disponibilità non condividono un'infrastruttura come l'alimentazione o il raffreddamento oppure la rete interna del dominio di disponibilità. È improbabile che l'eventuale guasto di un dominio di disponibilità influenzi gli altri domini di disponibilità della regione.

  • Domini di errore

    Un dominio di errore è un raggruppamento di hardware e infrastruttura all'interno di un dominio di disponibilità. Ogni dominio di disponibilità ha tre domini di guasto con alimentazione e hardware indipendenti. Quando si distribuiscono risorse su più domini di errore, le applicazioni possono tollerare errori fisici del server, la manutenzione del sistema e gli errori di alimentazione all'interno di un dominio di errore.

    Le risorse di questa architettura vengono distribuite in modo uniforme tra i domini di errore in ogni dominio di disponibilità.

  • Rete cloud virtuale (VCN) e subnet

    Un VCN è una rete customizzabile e definita dal software impostata in un'area Oracle Cloud Infrastructure. Come le reti di data center tradizionali, offre controllo completo sull'ambiente di rete. Un VCN può avere più blocchi CIDR non sovrapposti che è possibile modificare dopo la creazione di VCN. È possibile segmentare un VCN in subnet, che possono essere definite in un'area o in un dominio di disponibilità. Ogni subnet è costituita da un intervallo contiguo di indirizzi che non si sovrappongono alle altre subnet in VCN. È possibile modificare le dimensioni di una subnet dopo la creazione. Una subnet può essere pubblica o privata.

    Le risorse di calcolo e database di questa architettura sono collegate a un'unica subnet pubblica regionale. È possibile specificare VCN e subnet da utilizzare. Se si desidera creare un nuovo VCN e una subnet, è possibile specificare il blocco di indirizzi CIDR per VCN e la subnet.

  • Gateway Internet

    Il gateway Internet consente il traffico tra le subnet pubbliche in un VCN e Internet pubblico.

  • Lista di sicurezza

    Per ogni subnet è possibile creare regole di sicurezza che specifichino l'origine, la destinazione e il tipo di traffico che devono essere consentiti all'interno e all'esterno della subnet.

    Questa architettura include una lista di sicurezza per controllare il traffico da e verso i direttori partizioni.

  • Tabella di instradamento

    Le tabelle di instradamento virtuale contengono regole per instradare il traffico dalle subnet alle destinazioni al di fuori di un VCN, in genere tramite gateway.

    Questa architettura include una tabella di percorso per indirizzare il traffico dalla subnet al gateway Internet.

  • Director partizioni

    Un shard director (chiamato anche global service manager) è un listener di rete che consente l'instradamento delle connessioni ad alte prestazioni alle partizioni di database appropriate in base alle chiavi di partizionamento orizzontale.

    È possibile specificare il numero di directory partizioni richieste. Le directory partizioni vengono distribuite su singole istanze di calcolo, distribuite su tutti i domini di disponibilità dell'area e sui domini di errore all'interno di ciascun dominio di disponibilità. È possibile scegliere la forma delle istanze di calcolo da utilizzare per le directory partizioni.

  • Cataloghi partizioni primarie e in standby

    Un catalogo partizioni è un'istanza Oracle Database specifica che supporta la distribuzione automatizzata delle partizioni, la gestione centralizzata di un database partizionato e le query multipartizioni.

    Questa architettura contiene una coppia primaria di database di catalogo, ciascuno con un sistema Oracle Cloud Infrastructure VM DB a singolo codice. È possibile scegliere la forma del database e la capacità di memorizzazione disponibile per i database del catalogo.

  • Partizioni di database

    Ogni partizione di database è un sistema Oracle Cloud Infrastructure VM DB con un solo codice. È possibile specificare il numero di partizioni primarie, la forma del database da utilizzare e la capacità di memorizzazione disponibile. Le partizioni vengono distribuite in modo uniforme in tutti i domini di disponibilità dell'area e nei domini di errore all'interno di ciascun dominio di disponibilità.

    Durante la distribuzione dell'architettura, è possibile scegliere di eseguire il provisioning di una partizione in standby per ogni partizione primaria.
    • Se l'area contiene più domini di disponibilità, ogni partizione di una coppia primary-standby viene posizionata in un dominio di disponibilità separato.
    • Se l'area contiene un solo dominio di disponibilità, le partizioni primario e in standby vengono isolate in domini di errore separati.

Suggerimenti

Le vostre esigenze potrebbero differire dall'architettura descritta qui. Utilizzare i suggerimenti riportati di seguito come punto di partenza.

  • Dimensione e numero di partizioni
    Durante la distribuzione dello stack, è possibile specificare la forma del database da utilizzare e il numero di partizioni.
    • Scegliere una forma appropriata in base ai requisiti del carico di lavoro. La forma specificata viene utilizzata per tutte le partizioni.

      Dopo la distribuzione, è possibile modificare la forma delle singole partizioni per adattarsi alle modifiche del carico di lavoro. La partizione per la quale si modifica la forma viene arrestata e riavviata utilizzando la nuova forma.

    • In generale, un gran numero di piccole partizioni fornisce una migliore tolleranza complessiva agli errori rispetto a un piccolo numero di grandi partizioni. Per ridimensionare la topologia o migliorare la tolleranza agli errori, è possibile aggiungere partizioni in qualsiasi momento senza influire sulla disponibilità delle partizioni esistenti. Se necessario, è possibile eseguire lo scale nel database con partizionamento orizzontale; l'ultima partizione creata viene rimossa prima dopo aver spostato i dati nelle altre partizioni.
  • Disponibilità delle partizioni

    Per garantire l'elevata disponibilità delle partizioni, eseguire il provisioning delle partizioni in standby e utilizzare Oracle Data Guard per la sincronizzazione primare-standby e per il failover.

  • Disponibilità catalogo partizioni

    Per un'elevata disponibilità del catalogo partizioni, eseguire il provisioning di un catalogo in standby e utilizzare Oracle Data Guard per la sincronizzazione e il failover. Tenere presente che la disponibilità del catalogo partizioni non influisce sulla disponibilità del database con partizionamento orizzontale. Un'interruzione del catalogo partizioni influisce solo sulla capacità di eseguire operazioni di manutenzione o query multipartizioni durante il failover nel catalogo in standby. Le transazioni OLTP continuano ad essere instradate alle partizioni.

  • Disponibilità director partizioni

    Per un'elevata disponibilità del layer shard director, distribuire più directory partizioni. È possibile distribuire fino a cinque directory partizioni in un'area. Oracle consiglia di distribuire almeno due directory partizioni, isolate in domini di disponibilità separati o domini di errore.

  • Memoria

    La versione corrente dello stack Oracle Cloud Marketplace esegue il provisioning delle partizioni di database e del database del catalogo con memorizzazione basata su LVM (Logical Volume Manager). È possibile specificare la capacità di memorizzazione disponibile, a partire da 256 GB fino a 40 TB. Scegliere una capacità di memorizzazione appropriata per il carico di lavoro. A ogni partizione di database è associato un volume a blocchi della dimensione specificata.

    È possibile scalare la memoria in qualsiasi momento senza influire sulla disponibilità del database. Tenere presente che la memoria totale utilizzata è maggiore della memoria disponibile. Per ulteriori informazioni, consultare la documentazione di Oracle Cloud Infrastructure Database.

  • Progettazione rete

    Quando si crea un VCN, determinare il numero di blocchi CIDR richiesti e la dimensione di ciascun blocco in base al numero di risorse che si prevede di associare alle subnet in VCN. Utilizzare blocchi CIDR che si trovano all'interno dello spazio degli indirizzi IP privati standard.

    Selezionare blocchi CIDR che non si sovrappongono a nessun'altra rete (in Oracle Cloud Infrastructure, nel data center in locale o in un altro provider cloud) a cui si intende impostare connessioni private.

Considerazioni

  • Progettazione applicazione

    Qualsiasi applicazione che dispone di una strategia di distribuzione dati ben definita e accede ai dati principalmente utilizzando una chiave di partizionamento orizzontale (ad esempio ID cliente, numero di conto e così via) è adatta per i database con partizionamento orizzontale.

  • Scalabilità

    Dopo aver distribuito il database con partizionamento orizzontale, è possibile aumentare o diminuire il numero di partizioni modificando lo stack e applicando le modifiche. A seconda del fattore di replica specificato durante la distribuzione dello stack, vengono scalate anche le partizioni in standby.

    È possibile scalare anche il numero di amministratori partizioni.

  • Sicurezza

    Durante la distribuzione del database con partizionamento orizzontale, specificare una chiave pubblica SSH per abilitare connessioni SSH sicure ai database server.

  • Isolamento della rete

    Per garantire l'isolamento della rete, distribuire il database con partizionamento orizzontale in una subnet privata. Per l'accesso amministrativo ai database server, è possibile eseguire il provisioning di un host bastion in una subnet pubblica.

Distribuzione

Uno stack basato su Terraform per distribuire questa architettura di riferimento è disponibile in Oracle Cloud Marketplace.

  1. Andare a Oracle Cloud Marketplace.
  2. Fare clic su Ottieni applicazione.
  3. Seguire i prompt visualizzati sullo schermo.

Visualizza altro

Utilizzo di Oracle Sharding (documentazione Oracle Database 19C)