Tipi di tabella nei cluster elastici del server flessibile di Database di Azure per PostgreSQL

Un cluster ha cinque tipi di tabelle. Ogni tipo archivia i dati in modo diverso nei nodi e svolge scopi diversi.

Tabelle distribuite

Il primo tipo, e il più comune, è tabelle distribuite. Sono simili alle normali tabelle alle istruzioni SQL, ma sono partizionate orizzontalmente tra i nodi di lavoro. Questo partizionamento significa che le righe delle tabelle vengono archiviate in nodi diversi in tabelle di frammenti denominate partizioni.

I cluster elastici eseguono non solo istruzioni SQL, ma anche DDL (Data Definition Language) in un cluster. Quando si modifica lo schema di una tabella distribuita, la modifica si estende in modo da aggiornare tutte le partizioni della tabella tra i ruoli di lavoro. È necessario eseguire tali operazioni tramite una connessione sulla porta 5432.

Colonna distribuita

I cluster elastici usano il partizionamento orizzontale algoritmico per assegnare righe alle partizioni. L'assegnazione viene eseguita in modo deterministico in base al valore di una colonna di tabella denominata colonna di distribuzione. L'amministratore del cluster deve designare questa colonna durante la distribuzione di una tabella. Fare la scelta giusta è importante ai fini delle prestazioni e della funzionalità.

Tabelle di riferimento

Una tabella di riferimento è un tipo di tabella distribuita il cui intero contenuto si trova in una singola partizione. Il cluster replica il frammento su ogni nodo di lavoro. Le query su qualsiasi ruolo di lavoro possono accedere alle informazioni di riferimento in locale, senza il sovraccarico di rete della richiesta di righe da un altro nodo. Le tabelle di riferimento non hanno una colonna di distribuzione perché non è necessario distinguere partizioni separate per riga.

Le tabelle di riferimento sono in genere di piccole dimensioni e archiviano i dati rilevanti per le query in esecuzione in qualsiasi nodo di lavoro. Un esempio è costituito da valori enumerati, ad esempio gli stati degli ordini o le categorie di prodotti.

Tabelle locali

Quando si usa un cluster elastico, ogni nodo è un normale database PostgreSQL. È possibile creare tabelle comuni su di esse e scegliere di non partizionarle.

Un buon candidato per le tabelle locali è costituito da tabelle amministrative di piccole dimensioni che non partecipano alle query di join. Un esempio è una tabella users per l'accesso e l'autenticazione dell'applicazione. Questo tipo di tabella è utile solo quando non si prevede di bilanciare il carico della connessione tra un cluster elastico usando la porta 7432 o 8432.

Tabelle gestite locali

I cluster elastici possono aggiungere automaticamente tabelle locali ai metadati se esiste un riferimento di chiave esterna tra una tabella locale e una tabella di riferimento. Inoltre, è possibile creare manualmente tabelle gestite in locale eseguendo la citus_add_local_table_to_metadata funzione nelle normali tabelle locali. Le tabelle presenti nei metadati sono considerate tabelle gestite e possono essere sottoposte a query da qualsiasi nodo. Citus sa indirizzare al nodo per ottenere dati dalla tabella gestita locale. Queste tabelle vengono visualizzate come tabelle locali nella vista citus_tables.

Tabelle di schema

Quando si usa il partizionamento orizzontale basato su schema, il sistema associa automaticamente gli schemi distribuiti ai singoli gruppi di condivisione. Quando si creano tabelle in tali schemi, il sistema le converte automaticamente in tabelle distribuite co-localizzate senza una chiave di shard. Queste tabelle sono tabelle dello schema e vengono visualizzate come schema nella citus_tables vista.