Alibaba ha aperto il codice per PolarDB, un DBMS distribuito basato su PostgreSQL.

Alibaba, una delle più grandi aziende IT cinesi, ha aperto il codice sorgente del DBMS distribuito PolarDB, basato su PostgreSQL. PolarDB estende le funzionalità di PostgreSQL con strumenti per l'archiviazione distribuita dei dati con integrità e supporto per transazioni ACID nel contesto dell'intero database globale distribuito su diversi nodi del cluster. PolarDB supporta inoltre l'elaborazione distribuita delle query SQL, la tolleranza agli errori e l'archiviazione ridondante dei dati per recuperare le informazioni dopo il guasto di uno o più nodi. Se hai bisogno di espandere il tuo spazio di archiviazione, puoi semplicemente aggiungere nuovi nodi al cluster. Il codice è aperto sotto la licenza Apache 2.0.

PolarDB è costituito da due componenti: estensioni e un set di patch per PostgreSQL. Le patch espandono le capacità del core PostgreSQL e le estensioni includono componenti implementati separatamente da PostgreSQL, come un meccanismo di gestione delle transazioni distribuite, servizi globali, un processore di query SQL distribuito, metadati aggiuntivi, strumenti per la gestione del cluster, l'implementazione di un cluster e la semplificazione la migrazione dei sistemi esistenti verso di esso.

Le patch aggiungono al core PostgreSQL una versione distribuita del meccanismo per il controllo dell'accesso parallelo ai dati utilizzando la multiversione (MVCC, Multiversion concurrency control) per diversi livelli di isolamento. La maggior parte delle funzionalità di PolarDB è inclusa nelle estensioni, il che riduce la dipendenza da PostgreSQL e semplifica l'aggiornamento e l'implementazione di soluzioni basate su PolarDB (semplifica la transizione alle nuove versioni di PostgreSQL e mantiene la piena compatibilità con PostgreSQL). Per gestire il cluster viene utilizzato il toolkit pgxc_ctl, basato su un'utilità simile di PostgreSQL-XC e PostgreSQL-XL.

Ci sono tre componenti di base in un cluster: nodi di database (DN), gestore cluster (CM) e servizio di gestione delle transazioni (TM). Inoltre, è possibile utilizzare un bilanciatore del carico proxy. Ciascun componente è un processo separato e può essere eseguito su un server diverso. I nodi del database servono le query SQL dei client e allo stesso tempo agiscono come coordinatori dell'esecuzione delle query distribuite con la partecipazione di altri nodi del database. Il gestore cluster monitora lo stato di ciascun nodo del database, archivia la configurazione del cluster e fornisce strumenti per la gestione, il backup, il bilanciamento del carico, l'aggiornamento, l'avvio e l'arresto dei nodi. Il servizio di gestione delle transazioni è responsabile del mantenimento dell'integrità complessiva nell'intero cluster.

Alibaba ha aperto il codice per PolarDB, un DBMS distribuito basato su PostgreSQL.

PolarDB si basa sull'architettura di calcolo distribuito Shared-nothing, secondo la quale i dati vengono distribuiti quando archiviati su nodi diversi, senza utilizzare uno storage comune per tutti i nodi, e ogni nodo è responsabile della porzione di dati ad esso associata ed esegue query relative ai dati. Ogni tabella viene suddivisa in parti (sharding) utilizzando l'hashing basato sulla chiave primaria. Se la richiesta si estende su dati situati su nodi diversi, vengono attivati ​​un meccanismo di esecuzione distribuita delle transazioni e un coordinatore delle transazioni per garantire atomicità, coerenza, isolamento e affidabilità (ACID).

Per garantire la tolleranza agli errori, ogni segmento viene replicato su almeno tre nodi. Per risparmiare risorse, i dati completi includono solo due repliche e una è limitata all'archiviazione del registro di write-back (WAL). Uno dei due nodi con repliche complete viene eletto leader e partecipa all'elaborazione delle richieste. Il secondo nodo funge da riserva per il segmento dati in questione, mentre il terzo partecipa alla selezione del nodo principale e può essere utilizzato per ripristinare le informazioni in caso di guasto di due nodi con repliche complete. La replica dei dati tra i nodi del cluster è organizzata utilizzando l'algoritmo Paxos, che garantisce una definizione coerente di consenso in una rete con nodi potenzialmente inaffidabili.

Si noti che la piena funzionalità del DBMS PolarDB sarà rivelata in tre versioni: nella prima versione verranno pubblicati gli strumenti per la replica, l'alta disponibilità e la gestione dei cluster. La seconda versione presenterà un sistema di esecuzione delle transazioni distribuite che supporta ACID tra nodi e l'esecuzione SQL distribuita. La terza versione includerà un plugin per PostgreSQL e strumenti per la distribuzione flessibile dei dati tra i nodi, incluso il posizionamento adattivo dei segmenti per ottenere prestazioni ottimali e la possibilità di espandere il cluster aggiungendo nuovi nodi.

Fonte: opennet.ru

Aggiungi un commento