Tabelltyper i elastiska kluster i Azure Database for PostgreSQL – Flexibel server

Ett kluster har fem typer av tabeller. Varje typ lagrar data på olika sätt på noder och har olika syften.

Distribuerade tabeller

Den första typen, och den vanligaste, är distribuerade tabeller. De ser ut som normala tabeller till SQL-instruktioner, men de partitioneras horisontellt mellan arbetsnoder. Den här partitioneringen innebär att raderna i tabellerna lagras på olika noder i fragmenttabeller som kallas shards.

Elastiska kluster kör inte bara SQL utan även DDL-instruktioner (Data Definition Language) i ett kluster. När du ändrar schemat för en distribuerad tabell sprids ändringen så att alla tabellens skärvor på arbetsnoderna uppdateras. Du måste utföra sådana åtgärder via en anslutning via port 5432.

Distribuerad kolumn

Elastiska kluster använder algoritmisk sharding för att tilldela rader till datapartitioner. Tilldelningen görs deterministiskt baserat på värdet för en tabellkolumn som kallas för distributionskolumnen. Klusteradministratören måste ange den här kolumnen när en tabell distribueras. Att göra rätt val är viktigt för prestanda och funktioner.

Referenstabeller

En referenstabell är en typ av distribuerad tabell vars hela innehåll finns i en enda shard. Klustret replikerar fragmentet på varje arbetare. Förfrågningar på någon arbetare kan komma åt referensinformationen lokalt, utan nätverksöverföringskostnaderna för att begära rader från en annan nod. Referenstabeller har ingen distributionskolumn eftersom det inte finns något behov av att särskilja separata shards per rad.

Referenstabeller är vanligtvis små och lagrar data som är relevanta för frågor som körs på alla arbetsnoder. Ett exempel är uppräknade värden som orderstatusar eller produktkategorier.

Lokala tabeller

När du använder ett elastiskt kluster är varje nod en vanlig PostgreSQL-databas. Du kan skapa vanliga tabeller på dem och välja att inte fragmentera dem.

En bra kandidat för lokala tabeller är små administrativa tabeller som inte deltar i kopplingsfrågor. Ett exempel är en users tabell för programinloggning och autentisering. Den här typen av tabell är bara användbar när du inte planerar att lastbalansera anslutningen mellan ett elastiskt kluster med port 7432 eller 8432.

Lokala hanterade tabeller

Elastiska kluster kan automatiskt lägga till lokala tabeller i metadata om det finns en referens för sekundärnyckel mellan en lokal tabell och en referenstabell. Dessutom kan du skapa lokalt hanterade tabeller manuellt genom att citus_add_local_table_to_metadata köra funktionen på vanliga lokala tabeller. Tabeller som finns i metadata betraktas som hanterade tabeller och kan efterfrågas från valfri nod. Citus vet att dirigera till noden för att hämta data från den lokala hanterade tabellen. Sådana tabeller visas som lokala i citus_tables vyn.

Schematabeller

När du använder schemabaserad horisontell partitionering associerar systemet automatiskt distribuerade scheman med enskilda samlokaliseringsgrupper. När du skapar tabeller i dessa scheman konverterar systemet dem automatiskt till kolokaliserade distribuerade tabeller utan en skärvnyckel. Dessa tabeller är schematabeller och visas som schema i citus_tables vyn.