Granska distribuerade funktioner som tillhandahålls av Citus

Slutförd

För att tillhandahålla en databasplattform som uppfyller Woodgrove Banks krav har ditt team beslutat att migrera den lokala PostgreSQL-servern till en distribuerad databas med flera noder med hjälp av Azure Cosmos DB for PostgreSQL. Azure Cosmos DB for PostgreSQL, som skapats av Citus Data-teamet, kombinerar fördelarna med PostgreSQL, Citus-tillägget till PostgreSQL och en fullständigt hanterad databas som en tjänst i Azure.

Om du vill aktivera de extra funktioner som Woodgrove Bank begär planerar du att använda flera av De PostgreSQL-tillägg som stöds av Azure Cosmos DB för PostgreSQL.

Vad är PostgreSQL-tillägg?

I PostgreSQL är ett tillägg ett paket som paketera flera relaterade SQL-objekt. Tillägget innehåller nya datatyper, bättre övervakning, externa dataomslutningar, avancerade säkerhetsfunktioner och till och med nya språk för att skriva lagrade procedurer. Att paketera relaterade objekt på det här sättet kan förenkla databashanteringen avsevärt.

Den största fördelen med att använda ett tillägg, i stället för att bara köra ett SQL-skript för att läsa in en massa "okopplade" objekt i databasen, är att PostgreSQL förstår att objekten som ingår i tillägget går ihop. SQL-objekten i tilläggspaketet kan läsas in eller tas bort från databasen med ett enda kommando. När tilläggen har lästs in i databasen kan de fungera som inbyggda funktioner, så att du kan använda funktioner som inbyggda PostgreSQL-funktioner.

Vad är Citus?

Citus tillhandahåller de primära funktionerna för prestanda och skalbarhet i Azure Cosmos DB for PostgreSQL. I den här lektionen undersöker du tillägget och dess funktioner för att bättre förstå hur det hjälper Woodgrove Bank att uppnå sina prestanda- och skalbarhetsmål.

Citus är ett tillägg med öppen källkod för PostgreSQL som skapades för att tillåta datalagring och databehandlingsfunktioner att skala över ett kluster med PostgreSQL-servrar. Citus är utformat för att fortfarande tillhandahålla traditionella relationsdatabasfunktioner som transaktioner, kopplingar och sekundärnycklar. Citus-tillägget möjliggör den här funktionen genom att omvandla PostgreSQL till en mycket skalbar distribuerad databas med funktioner som en distribuerad SQL-motor, horisontell partitionering, referenstabeller och distribuerade tabeller.

Diagram of an Azure Cosmos DB for PostgreSQL cluster, with multiple worker nodes and a single coordinator node.

Diagrammet innehåller även pilar till höger och vänster som visar hur extra noder kan läggas till för att skala ut.

Skala beräkning mellan noder

Citus utökar funktionerna i PostgreSQL genom att flera PostgreSQL-servrar, så kallade noder, kan grupperas tillsammans. Varje kluster består av en koordinatornod och flera arbetsnoder, vilket gör att beräkning och minne kan skalas över flera PostgreSQL-servrar i molnet. Tillsammans kan kluster lagra mer data och använda fler CPU-kärnor än en enskild server, vilket ger snabbare svar på stora datamängder, även över flera regioner.

Woodgrove Banks kontaktlösa betalningsprogram kräver möjligheten att enkelt lägga till beräkningsresurser för att uppfylla kraven från sina tunga användaranalysarbetsbelastningar och effektivt betjäna sina kunder. Med Azure Cosmos DB for PostgreSQL kan de skala sin databas mellan regioner för att tillhandahålla mer högpresterande frågor när de distribuerar sin analysarbetsbelastning över flera noder och drar nytta av mer minne och processorkärnor.

Datadistribution

Med Citus-tillägget kan data distribueras mellan noder i klustret genom att du kan skapa distribuerade tabeller. Distribuerade tabeller förbättrar prestandan genom att horisontellt partitionera tabellrader mellan arbetsnoder. Varje rad tilldelas till en logisk grupp som kallas shard. Varje rad kommer att finnas i exakt en shard och varje shard kan innehålla flera rader. Genom att distribuera data mellan noder kan du dra nytta av mer lagringskapacitet än vad som skulle vara tillgängligt på en enskild server.

Metadatatabeller som finns på koordinatornoden lagrar information om vilka shards som lagras på vilken nod. Mappningen av shards till arbetsnoder kallas shardplacering. Shard-placering möjliggör utförande frågeåtgärder mot distribuerade data i databasen. Dessa metadatatabeller spårar DNS-namn och hälsotillstånd för arbetsnoder utöver datadistribution mellan noder. Under frågekörningen bestämmer koordinatorn vilken åtgärd som ska vidtas genom att referera till dessa metadatatabeller. Koordinatornoden kontrollerar metadatatabellerna för att avgöra om data finns på en enskild nod eller flera noder och dirigerar sedan frågor till arbetsnoder efter behov.

Kraften i parallelliserad frågekörning

Citus-kombinationen av parallellitet, att lagra mer data i minnet och högre I/O-bandbredd kan leda till betydande prestandaförbättringar för SaaS-program med flera klientorganisationer, kundriktade instrumentpaneler för realtidsanalys och arbetsbelastningar i tidsserier.

Genom att skapa distribuerade tabeller i Woodgrove Bank-databasen kan du sprida arbetsbelastningar över flera arbetsnoder och använda Citus för att dra nytta av mer databehandlingskraft. Woodgrove Banks databasutvecklare behöver inte lära sig nya sätt att fråga efter data, eftersom distribuerade tabeller verkar vara vanliga tabeller till SQL-instruktioner. Distribuerade tabeller partitioneras dock horisontellt mellan arbetsnoder, och genom att lagra olika rader på olika arbetare kan koordinatornoden parallellisera frågekörningen.

Koordinatorn skapar frågefragment som riktar sig mot specifika shards och skickar sedan dessa fragment till lämplig arbetare för körning. Dessa frågefragment körs samtidigt på arbetsnoderna, vilket gör att systemet kan parallellisera arbetsbelastningen jämnt mellan många servrar.

Animation of the flow of a query arriving from an application.

I animeringen bearbetas frågan av koordinatornoden med hjälp av metadatatabeller och sedan skickas frågefragmenten till arbetsnoderna för körning. Resultatet av frågekörningen på arbetsnoderna skickas tillbaka till koordinatorn, aggregeras och returneras till programmet.