Alibaba abriu o código para PolarDB, un DBMS distribuído baseado en PostgreSQL.

Alibaba, unha das maiores empresas de TI da China, ten PolarDB de código aberto, un sistema de xestión de bases de datos distribuídas baseado en PostgreSQL. PolarDB amplía as capacidades de PostgreSQL co almacenamento de datos distribuído, garantindo a integridade dos datos e admitindo transaccións ACID nunha base de datos global distribuída en varios nodos do clúster. PolarDB tamén admite o procesamento de consultas SQL distribuídas, a tolerancia a fallos e o almacenamento de datos redundante para repoñer os datos despois do fallo dun ou máis nodos. Se é necesaria a expansión do almacenamento, simplemente engada novos nodos ao clúster. O código é de código aberto baixo a licenza Apache 2.0.

PolarDB consta de dous compoñentes: extensións e un conxunto de parches para PostgreSQL. Os parches amplían as capacidades do núcleo de PostgreSQL, mentres que as extensións inclúen compoñentes implementados por separado de PostgreSQL, como un motor de xestión de transaccións distribuídas, servizos globais, un xestor de consultas SQL distribuído, metadatos adicionais, ferramentas para a xestión de clústeres, despregamento de clústeres e facilitación da migración de sistemas existentes.

Os parches engaden unha versión distribuída do mecanismo de control de concorrencia multiversión (MVCC) ao kernel de PostgreSQL para diferentes niveis de illamento. Gran parte da funcionalidade de PolarDB trasladouse a extensións, o que reduce a dependencia de PostgreSQL e simplifica as actualizacións e despregamentos de solucións baseadas en PolarDB (facilitando a migración a novas versións de PostgreSQL e mantendo a compatibilidade total con PostgreSQL). A xestión de clústeres usa o kit de ferramentas pgxc_ctl, baseado nunha utilidade similar de PostgreSQL-XC e PostgreSQL-XL.

Un clúster consta de tres compoñentes básicos: nodos de base de datos (DN), un xestor de clústeres (CM) e un servizo de xestión de transaccións (TM). Tamén se pode usar un balanceador de carga proxy. Cada compoñente é un proceso independente e pódese executar nun servidor diferente. servidorOs nodos de base de datos procesan consultas SQL dos clientes e actúan simultaneamente como coordinadores para a execución de consultas distribuídas que involucran outros nodos de base de datos. O xestor de clústeres supervisa o estado de cada nodo de base de datos, almacena a configuración do clúster e proporciona ferramentas para xestionar, facer copias de seguridade, balancear a carga, actualizar, iniciar e deter os nodos. O servizo de xestión de transaccións é responsable de manter a integridade xeral en todo o clúster.

 Alibaba abriu o código para PolarDB, un DBMS distribuído baseado en PostgreSQL.

PolarDB baséase nunha arquitectura de computación distribuída de tipo "shared-nothing", na que os datos se distribúen entre diferentes nodos para o seu almacenamento, sen usar almacenamento compartido. Cada nodo é responsable da súa porción de datos asignada e executa consultas relacionadas cos datos. Cada táboa divídese mediante hash de clave primaria. Se unha consulta abrangue datos situados en diferentes nodos, utilízase un mecanismo de execución de transaccións distribuídas e un coordinador de transaccións para garantir a atomicidade, a consistencia, o illamento e a durabilidade (ACID).

Para garantir a tolerancia a fallos, cada fragmento replícase en polo menos tres nodos. Para conservar recursos, os datos completos contéñense só en dúas réplicas e unha delas limítase a almacenar o rexistro de escritura diferida (WAL). Un dos dous nodos con réplicas completas elíxese como líder e participa no procesamento de consultas. O segundo nodo serve como copia de seguridade para o fragmento de datos en cuestión e o terceiro participa na elección do líder e pódese usar para recuperar datos en caso de fallo de dous nodos con réplicas completas. A replicación de datos entre os nodos do clúster organízase mediante o algoritmo Paxos, que garante un consenso consistente nunha rede con nodos potencialmente pouco fiables.

Cómpre sinalar que se prevé que a funcionalidade completa do SGBD PolarDB se publique en tres versións: a primeira versión incluirá ferramentas de replicación, alta dispoñibilidade e xestión de clústeres. A segunda versión implementará un sistema de execución de transaccións distribuído que admita ACID entre nodos e execución de SQL distribuído. A terceira versión introducirá un complemento e ferramentas de PostgreSQL para unha distribución flexible de datos entre nodos, incluíndo a colocación adaptativa de fragmentos para un rendemento óptimo e a capacidade de expandir o clúster engadindo novos nodos.

Fonte: opennet.ru

Engadir un comentario