
Durante los últimos 16 años, Greenplum, un sistema de gestión de bases de datos paralelo paralelo abierto y masivo, ha ayudado a una variedad de empresas a tomar decisiones basadas en el análisis de datos.
Durante este tiempo, Greenplum penetró en varias áreas de negocios, incluyendo: minorista, fintech, telecomunicaciones, industria, comercio electrónico. Escalado a cientos de nodos horizontalmente, tolerancia a fallas, código fuente abierto, compatibilidad total con PostgreSQL, transaccionalidad y ANSI SQL: es difícil imaginar una mejor combinación de propiedades para un DBMS analítico. Partiendo de grandes grupos en compañías gigantes globales, como Morgan Stanley (200 nodos, 25 Pb de datos) o Tinkoff (> 70 nodos), y terminando con pequeñas instalaciones de dos nodos en startups acogedoras, cada vez más compañías eligen Greenplum. Es especialmente agradable observar esta tendencia en Rusia: en los últimos dos años, el número de grandes empresas nacionales que utilizan Greenplum se ha triplicado.
En el otoño de 2019, se lanzó otra versión importante de DBMS. En este artículo, hablaré brevemente sobre las principales características nuevas de GP 6.
La versión principal anterior de Greenplum versión 5 se publicó en septiembre de 2017, los detalles se pueden encontrar en
este artículo . Si aún no sabe qué es Greenplum, se puede obtener una breve introducción de
este artículo . Es antiguo, pero la arquitectura DBMS se refleja correctamente.
El lanzamiento actual, por derecho, se puede llamar una creación colectiva: varias empresas de todo el mundo participaron en el desarrollo, entre ellas Pivotal, Arenadata (donde trabaja el autor de este artículo), Alibaba.
Entonces, ¿qué hay de nuevo en Greenplum 6?
Tablas replicadas
Permítame recordarle que en Greenplum había dos tipos de distribución de tablas en un clúster:
- Distribución aleatoria uniforme
- Distribución en uno o varios campos.
En la mayoría de los casos, la unión de dos tablas (JOIN) se realizó con la redistribución de datos entre segmentos del clúster durante la ejecución de la consulta, y solo si ambas tablas fueron inicialmente distribuidas por la clave de unión JOIN se produjo localmente en segmentos sin transferir datos entre segmentos.
GP 6 ofrece a los arquitectos una nueva herramienta de optimización del esquema de almacenamiento: tablas replicadas. Dichas tablas están duplicadas en todos los segmentos del clúster. Cualquier conexión a dicha tabla en el lado derecho se realizará localmente, sin redistribución de datos. Básicamente, la función está diseñada para almacenar directorios voluminosos.
Ejemplo de consulta con tabla replicadaCREATE TABLE expand_replicated … DISTRIBUTED REPLICATED; CREATE TABLE expand_random … DISTRIBUTED RANDOMLY; explain select * from expand_rnd a2 left join expand_replicated a3 on a2.gen = a3.gen
Algoritmo de compresión estándar Z (ZSTD)
Presentado en 2016 por los desarrolladores de Facebook, el algoritmo de compresión sin pérdidas casi de inmediato golpeó el corazón de nuestro equipo de Arenadata, porque en comparación con Zlib (utilizado por defecto en Greenplum) tiene relaciones de compresión más altas con menos tiempo requerido para la compresión y descompresión:
Fuente: cnx-software.comLa eficiencia de compresión es uno de los parámetros más importantes del DBMS analítico moderno. De hecho, le permite reducir la carga en el subsistema de disco relativamente caro del clúster al cargar CPU relativamente baratas. Al leer y escribir secuencialmente grandes cantidades de datos, esto se traduce en una reducción significativa en el TCO del sistema.
En 2017, nuestro equipo agregó soporte ZSTD para tablas de columnas en Greenplum, sin embargo, de acuerdo con la política de lanzamiento, esta revisión no se incluyó en los lanzamientos menores oficiales de Greenplum. Hasta hoy, solo estaba disponible para clientes comerciales de Arenadata, y con el lanzamiento de 6.0, todos pueden usarlo.
Optimización de expansión de clúster (expandir)
En versiones anteriores de GP, la expansión de clúster horizontal (agregar nuevos nodos) tenía algunas limitaciones:
- Aunque la redistribución de datos se produjo en segundo plano sin tiempo de inactividad, fue necesario reiniciar el sistema al agregar nuevos nodos
- El algoritmo de hashing y distribución de datos requirió una redistribución completa de todas las tablas durante la expansión: el proceso de distribución de datos en segundo plano podría llevar horas o incluso días para grupos especialmente grandes
- Durante la distribución en segundo plano de las tablas, cualquier combinación solo se distribuía
Greenplum 6 introdujo un algoritmo de expansión de clúster completamente nuevo, debido a lo cual:
- La expansión ahora ocurre sin reiniciar el sistema: no se necesita tiempo de inactividad
- El algoritmo de hash constante le permite redistribuir solo parte de los bloques al agregar nodos, es decir, la redistribución de fondo de las tablas funciona muchas veces más rápido
- La lógica para cambiar los directorios del sistema ha cambiado, ahora incluso durante el proceso de expansión, todas las conexiones (JOIN) funcionan como de costumbre, tanto localmente como distribuida
Ahora, la extensión de Greenplum es cuestión de minutos, no de horas, esto permitirá que los clústeres sigan el apetito cada vez mayor de las unidades de negocios.
Seguridad a nivel de columna
Ahora es posible distribuir derechos a columnas específicas en las tablas (la característica vino de PostgreSQL):
grant all (column_name) on public.table_name to gpadmin;
Jsonb
El almacenamiento binario óptimo de objetos de tipo JSON ahora está disponible en la GP. Lea más sobre el formato
aquí .
Explicación automática
Otra gran extensión que llegó al GP de PostgreSQL. Fue modificado para trabajar en modo distribuido en el clúster de Greenplum por el equipo de Arenadata.
Permite automáticamente para cada solicitud (o tomada por separado) en el DBMS guardar información sobre:
- plan de solicitud;
- recursos consumidos en cada etapa de ejecución de consultas en cada segmento (nodo);
- tiempo empleado
- El número de filas procesadas en cada etapa de la consulta en cada segmento (nodo).
Diskquota
Extensión PostgreSQL que le permite limitar el almacenamiento en disco disponible para usuarios y esquemas individuales:
select diskquota.set_schema_quota('schema_name', '1 MB'); select diskquota.set_role_quota('user_name', '1 MB');
Nuevas características de distribución de DB de Arenadata
Descargo de responsabilidad: habrá un par de líneas de publicidad a continuación :)
Permítame recordarle que nosotros, Arenadata, estamos desarrollando, implementando y respaldando nuestra plataforma de almacenamiento de datos basada en tecnologías de código abierto: Greenplum, Kafka, Hadoop, Clickhouse. Nuestros clientes son las mayores empresas rusas en las áreas de venta minorista, telecomunicaciones, tecnología financiera y otras. Por un lado, somos los contribuyentes de los proyectos de código abierto (comprometiendo cambios en el kernel), por otro lado, estamos desarrollando una funcionalidad adicional que solo está disponible para nuestros clientes comerciales. Además hablaremos sobre las características principales.
Tkhemali Connector, también conocido como Connector Greenplum -> Clickhouse
En los proyectos, a menudo usamos el grupo Greenplum + Clickhouse; por un lado, esto nos permite usar los mejores modelos clásicos de construcción de almacenes de datos (desde fuentes hasta mercados de datos) que requieren muchas conexiones, sintaxis desarrollada ANSI SQL, transaccionalidad y otros chips que Greenplum tiene, Por otro lado, para proporcionar acceso a los amplios escaparates integrados con una velocidad máxima a un número significativo de usuarios, y Clickhouse no tiene competidores en esto.
Para utilizar eficazmente dicho paquete, hemos desarrollado un conector paralelo especial, que transaccionalmente (es decir, consistente incluso en el caso de una transacción de reversión) le permite transferir datos desde el GP a KH. En general, la arquitectura de este conector merece un artículo puramente técnico separado; de hecho, en el interior tuvimos que implementar colas asíncronas paralelas con un sistema para seleccionar dinámicamente el número de hilos por inserción y flujo de datos.
El resultado es una velocidad de interacción fantástica: en nuestras pruebas en discos SATA típicos, obtenemos hasta 1 Gb / s por inserción en un par de servidores Greenplum: Clickhouse. Dado que el clúster GP promedio de nuestros clientes consta de más de 20 servidores, la velocidad de interacción es más que suficiente.
Conector Kafka
Hicimos lo mismo con la integración con el agente de mensajes de Kafka: a menudo nos encontramos con la tarea de sobrecargar los datos de Kafka a Greenplum en modo casi en tiempo real (segundos o decenas de segundos). Sin embargo, la arquitectura del conector para Kafka es diferente. Un conector es un grupo de procesos sincronizados separados (iniciados en Docker) con autodescubrimiento, que, por un lado, son consumidores de Kafka y, por otro lado, insertan datos directamente en los segmentos de Greenplum. El conector puede funcionar con Kafka Registry y garantiza la consistencia completa de los datos transferidos incluso en caso de fallas de hardware.
Sistema de gestión y seguimiento.
La operación del sistema en producción impone altas demandas en la implementación, actualización y monitoreo del clúster. Es importante que todo lo que sucede en el DBMS sea transparente para las operaciones y los especialistas en DBA.
Nuestro sistema de gestión y monitoreo Arenadata Cluster Manager (ADCM) brinda a los profesionales de operaciones todas las herramientas que necesitan. De hecho, la implementación y actualización del clúster de Greenplum se realiza con el clic de un botón en la interfaz gráfica (todos los sistemas operativos, servicios, montaje de disco y configuraciones de red se realizan automáticamente), además, obtiene una pila de monitoreo totalmente configurada, lista para integrarse con sus sistemas corporativos. Por cierto, Arenadata Cluster Manager puede administrar no solo Greenplum, sino también Hadoop, Kafka, Clickhouse (se requieren nuestros ensamblajes de estos servicios. Sus versiones gratuitas, como el propio ADCM, se pueden descargar absolutamente gratis en nuestro
sitio web , simplemente completando una ventana emergente).
Conclusión
Si está utilizando Greenplum 5.X, le recomiendo considerar actualizar su clúster a la versión actual 6.X en los próximos 2-3 meses.
Si aún no está utilizando Greenplum, ¡únase a nosotros! Nosotros, Arenadata, siempre estamos listos para ayudarlo con esto.
Referencias
Greenplum en githubCanal Greenplum Russia Telegram : haga sus preguntas directamente a los usuarios de Greenplum
Documentación de Greenplum 6