Alibaba libero el código fuente de PolarDB
Alibaba dio a conocer hace pocos dias que han tomado la decisión de liberar el código fuente de su sistema de gestión de bases de datos distribuidas «PolarDB» el cual está basado en PostgreSQL, el código está abierto bajo la licencia Apache 2.0.
Para quienes desconocen de PolarDB, deben saber que esta es una base de datos relacional basado en la nube desarrollada por Alibaba que amplía las capacidades de PostgreSQL para el almacenamiento de datos distribuidos con integridad y soporte para transacciones ACID en el contexto de toda la base de datos global, distribuida en diferentes nodos de clúster.
PolarDB también admite el procesamiento distribuido de consultas SQL, proporcionando tolerancia a fallas y almacenamiento de datos redundante para reponer la información después de que uno o más nodos fallan. Si necesita expandir el almacenamiento, simplemente agregue nuevos nodos al clúster.
PolarDB consta de dos partes: extensiones y un conjunto de parches para PostgreSQL. Los parches amplían las capacidades del núcleo de PostgreSQL y las extensiones incluyen componentes implementados por separado de PostgreSQL, como un mecanismo de administración de transacciones distribuidas, servicios globales, un procesador de consultas SQL distribuido, metadatos adicionales, herramientas para administrar un clúster, implementar un clúster, y simplificar la migración de los sistemas existentes a él.
Los parches agregan una versión distribuida del mecanismo de control de concurrencia multiversion (MVCC) al núcleo de PostgreSQL para diferentes niveles de aislamiento. La mayor parte de la funcionalidad de PolarDB se ha trasladado a extensiones, lo que reduce la dependencia de PostgreSQL y simplifica la actualización e implementación de soluciones basadas en PolarDB (simplifica la transición a nuevas versiones de PostgreSQL y mantiene total compatibilidad con PostgreSQL).
Hay tres componentes básicos en un clúster: nodos de base de datos (DN), administrador de clúster (CM) y servicio de administración de transacciones (TM), además, puede estar involucrado un equilibrador de carga de proxy. Cada uno de los componentes es un proceso independiente y se puede ejecutar en diferentes servidores físicos. Los nodos de bases de datos sirven consultas SQL de clientes y al mismo tiempo actúan como coordinadores de la ejecución de consultas distribuidas con la participación de otros nodos de bases de datos.
El administrador del clúster monitorea el estado de cada nodo de la base de datos, almacena la configuración del clúster y proporciona herramientas para administrar, realizar copias de seguridad, equilibrar la carga, actualizar, iniciar y detener nodos. El servicio de administración de transacciones es responsable de mantener la integridad general en todo el clúster.
PolarDB se basa en la arquitectura de computación distribuida Shared-nothing según la cual los datos se distribuyen durante el almacenamiento a diferentes nodos, sin usar un almacenamiento común para todos los nodos y cada nodo es responsable de la pieza de datos vinculada a él y ejecuta los datos de consultas relacionadas.
Cada tabla se fragmenta mediante hash de clave principal. Si la solicitud cubre datos ubicados en diferentes nodos, el motor de ejecución de transacciones distribuidas y el coordinador de transacciones están conectados para garantizar la atomicidad, consistencia, aislamiento y confiabilidad (ACID).
Para garantizar la tolerancia a fallos, cada segmento se replica en al menos tres nodos. Para ahorrar recursos, los datos completos incluyen solo dos réplicas y una se limita a almacenar el registro de escritura diferida (WAL). Uno de los dos nodos de réplica completa se elige como líder y participa en el procesamiento de solicitudes, mientras que el segundo nodo actúa como repuesto para el segmento de datos en consideración, y el tercero participa en la selección del nodo principal y puede usarse para restaurar información en caso de falla de dos nodos con réplicas completas.
La replicación de datos entre los nodos del clúster se organiza mediante el algoritmo de Paxos, que asegura la determinación consistente del consenso en una red con nodos potencialmente no confiables. Cabe señalar que se prevé divulgar la funcionalidad completa del DBMS PolarDB en tres versiones.
Finalmente si estás interesado en conocer más al respecto, puedes consultar los detalles en el siguiente enlace.