Alibaba har öppnat koden för PolarDB, ett distribuerat DBMS baserat på PostgreSQL.

Alibaba, ett av de största kinesiska IT-företagen, har öppnat källkoden för det distribuerade DBMS PolarDB, baserat på PostgreSQL. PolarDB utökar funktionerna hos PostgreSQL med verktyg för distribuerad datalagring med integritet och stöd för ACID-transaktioner i sammanhanget av hela den globala databasen fördelad över olika klusternoder. PolarDB stöder också distribuerad SQL-frågebehandling, feltolerans och redundant datalagring för att återställa information efter att en eller flera noder misslyckats. Om du behöver utöka din lagring kan du helt enkelt lägga till nya noder i klustret. Koden är öppen under Apache 2.0-licensen.

PolarDB består av två komponenter - tillägg och en uppsättning patchar för PostgreSQL. Patchar utökar funktionerna för PostgreSQL-kärnan, och tillägg inkluderar komponenter implementerade separat från PostgreSQL, såsom en distribuerad transaktionshanteringsmekanism, globala tjänster, en distribuerad SQL-frågeprocessor, ytterligare metadata, verktyg för att hantera klustret, distribuera ett kluster och förenkla migreringen av befintliga system till den.

Patcharna lägger till PostgreSQL-kärnan en distribuerad version av mekanismen för att kontrollera parallell åtkomst till data med hjälp av multiversion (MVCC, Multiversion concurrency control) för olika isoleringsnivåer. Det mesta av funktionaliteten i PolarDB ingår i tillägg, vilket minskar beroendet av PostgreSQL och förenklar uppdatering och implementering av lösningar baserade på PolarDB (det förenklar övergången till nya versioner av PostgreSQL och bibehåller full kompatibilitet med PostgreSQL). För att hantera klustret används verktygslådan pgxc_ctl, baserat på ett liknande verktyg från PostgreSQL-XC och PostgreSQL-XL.

Det finns tre grundläggande komponenter i ett kluster: databasnoder (DN), klusterhanterare (CM) och transaktionshanteringstjänst (TM). Dessutom kan en proxy lastbalanserare användas. Varje komponent är en separat process och kan köras på en annan server. Databasnoder betjänar SQL-förfrågningar från klienter och fungerar samtidigt som koordinatorer av distribuerad frågekörning med deltagande av andra databasnoder. Klusterhanteraren övervakar tillståndet för varje databasnod, lagrar klusterkonfigurationen och tillhandahåller verktyg för hantering, säkerhetskopiering, lastbalansering, uppdatering, start och stopp av noder. Transaktionshanteringstjänsten ansvarar för att upprätthålla den övergripande integriteten över hela klustret.

Alibaba har öppnat koden för PolarDB, ett distribuerat DBMS baserat på PostgreSQL.

PolarDB är baserad på Shared-nothing distributed computing-arkitekturen, enligt vilken data distribueras när de lagras på olika noder, utan att använda en gemensam lagring för alla noder, och varje nod är ansvarig för den del av data som är associerad med den och utför frågor relaterade till datan. Varje tabell delas upp i delar (sharding) med hjälp av hashing baserat på primärnyckeln. Om begäran sträcker sig över data som finns på olika noder, aktiveras en distribuerad transaktionsexekveringsmekanism och en transaktionskoordinator för att säkerställa atomicitet, konsistens, isolering och tillförlitlighet (ACID).

För att säkerställa feltolerans replikeras varje segment till minst tre noder. För att spara resurser innehåller den fullständiga informationen endast två repliker, och en är begränsad till lagring av återskrivningsloggen (WAL). En av de två noderna med fullständiga repliker väljs till ledare och deltar i behandlingen av förfrågningar. Den andra noden fungerar som reserv för det aktuella datasegmentet och den tredje deltar i valet av den ledande noden och kan användas för att återställa information i händelse av fel på två noder med fulla repliker. Datareplikering mellan klusternoder organiseras med hjälp av Paxos-algoritmen, som säkerställer en konsekvent definition av konsensus i ett nätverk med potentiellt opålitliga noder.

Det noteras att den fulla funktionaliteten hos PolarDB DBMS planeras att avslöjas under tre utgåvor: I den första versionen kommer verktyg för replikering, hög tillgänglighet och klusterhantering att publiceras. Den andra versionen kommer att innehålla ett distribuerat transaktionsexekveringssystem som stöder cross-node ACID och distribuerad SQL-exekvering. Den tredje utgåvan kommer att innehålla ett plugin för PostgreSQL och verktyg för flexibel datadistribution över noder, inklusive adaptiv placering av segment för att uppnå optimal prestanda och möjligheten att utöka klustret genom att lägga till nya noder.

Källa: opennet.ru

Lägg en kommentar