Alibaba har åpnet koden for PolarDB, et distribuert DBMS basert på PostgreSQL.

Alibaba, et av de største kinesiske IT-selskapene, har åpnet kildekoden til det distribuerte DBMS PolarDB, basert på PostgreSQL. PolarDB utvider mulighetene til PostgreSQL med verktøy for distribuert datalagring med integritet og støtte for ACID-transaksjoner i sammenheng med hele den globale databasen fordelt på ulike klyngenoder. PolarDB støtter også distribuert SQL-spørringsbehandling, feiltoleranse og redundant datalagring for å gjenopprette informasjon etter at en eller flere noder feiler. Hvis du trenger å utvide lagringen din, kan du ganske enkelt legge til nye noder i klyngen. Koden er åpen under Apache 2.0-lisensen.

PolarDB består av to komponenter - utvidelser og et sett med patcher for PostgreSQL. Patcher utvider mulighetene til PostgreSQL-kjernen, og utvidelser inkluderer komponenter implementert separat fra PostgreSQL, for eksempel en distribuert transaksjonsadministrasjonsmekanisme, globale tjenester, en distribuert SQL-spørringsprosessor, ytterligere metadata, verktøy for å administrere klyngen, distribuere en klynge og forenkle migrering av eksisterende systemer til det.

Patchene legger til PostgreSQL-kjernen en distribuert versjon av mekanismen for å kontrollere parallell tilgang til data ved bruk av multiversjon (MVCC, Multiversion concurrency control) for forskjellige isolasjonsnivåer. Det meste av funksjonaliteten til PolarDB er inkludert i utvidelser, noe som reduserer avhengigheten av PostgreSQL og forenkler oppdatering og implementering av løsninger basert på PolarDB (det forenkler overgangen til nye versjoner av PostgreSQL og opprettholder full kompatibilitet med PostgreSQL). For å administrere klyngen brukes pgxc_ctl-verktøysettet, basert på et lignende verktøy fra PostgreSQL-XC og PostgreSQL-XL.

Det er tre grunnleggende komponenter i en klynge: databasenoder (DN), cluster manager (CM) og transaksjonsadministrasjonstjeneste (TM). I tillegg kan en proxy-lastbalanser brukes. Hver komponent er en separat prosess og kan kjøres på en annen server. Databasenoder betjener SQL-spørringer fra klienter og fungerer samtidig som koordinatorer for distribuert spørringskjøring med deltakelse av andre databasenoder. Klyngebehandlingen overvåker tilstanden til hver databasenode, lagrer klyngekonfigurasjonen og gir verktøy for å administrere, sikkerhetskopiere, belastningsbalansere, oppdatere, starte og stoppe noder. Transaksjonsadministrasjonstjenesten er ansvarlig for å opprettholde den generelle integriteten på tvers av hele klyngen.

Alibaba har åpnet koden for PolarDB, et distribuert DBMS basert på PostgreSQL.

PolarDB er basert på Shared-nothing-distribuert databehandlingsarkitektur, ifølge hvilken data distribueres når de lagres på forskjellige noder, uten å bruke en felles lagring for alle noder, og hver node er ansvarlig for den delen av data som er knyttet til den og utfører spørringer relatert til dataene. Hver tabell er sønderdelt i deler (sharding) ved hjelp av hashing basert på primærnøkkelen. Hvis forespørselen spenner over data lokalisert på forskjellige noder, aktiveres en distribuert transaksjonsutførelsesmekanisme og en transaksjonskoordinator for å sikre atomitet, konsistens, isolasjon og pålitelighet (ACID).

For å sikre feiltoleranse, replikeres hvert segment til minst tre noder. For å spare ressurser inkluderer de fullstendige dataene bare to replikaer, og en er begrenset til å lagre tilbakeskrivningsloggen (WAL). En av de to nodene med fulle replikaer velges som leder og deltar i behandlingen av forespørsler. Den andre noden fungerer som reserve for det aktuelle datasegmentet, og den tredje tar del i valget av den ledende noden og kan brukes til å gjenopprette informasjon ved feil på to noder med full replika. Datareplikering mellom klyngenoder er organisert ved hjelp av Paxos-algoritmen, som sikrer en konsistent definisjon av konsensus i et nettverk med potensielt upålitelige noder.

Det bemerkes at den fulle funksjonaliteten til PolarDB DBMS planlegges å bli avslørt over tre utgivelser: I den første versjonen vil verktøy for replikering, høy tilgjengelighet og klyngeadministrasjon bli publisert. Den andre utgivelsen vil inneholde et distribuert transaksjonsutførelsessystem som støtter cross-node ACID og distribuert SQL-kjøring. Den tredje utgivelsen vil inkludere en plugin for PostgreSQL og verktøy for fleksibel datadistribusjon på tvers av noder, inkludert adaptiv plassering av segmenter for å oppnå optimal ytelse og muligheten til å utvide klyngen ved å legge til nye noder.

Kilde: opennet.ru

Legg til en kommentar