ClickHouse
Introducción a ClickHouse
ClickHouse es una base de datos columnar de código abierto orientada al análisis y procesamiento en línea. Es independiente del sistema de big data Hadoop y cuenta con la máxima tasa de compresión y un rendimiento de consulta rápida. Además, ClickHouse admite consultas SQL y proporciona un buen rendimiento de consultas, especialmente el análisis de agregación y el rendimiento de consultas basado en tablas grandes y amplias. La velocidad de consulta es un orden de magnitud más rápida que la de otras bases de datos analíticas.
Las funciones principales de ClickHouse son las siguientes:
Funciones de DBMS completas
- Lenguaje de definición de datos (DDL): permite crear, modificar o eliminar dinámicamente bases de datos, tablas y vistas sin reiniciar los servicios.
- Lenguaje de manipulación de datos (DML): permite consultar, insertar, modificar o eliminar dinámicamente los datos.
- Control de permisos: admite la configuración de permisos de operación de tablas o bases de datos basadas en el usuario para garantizar la seguridad de los datos.
- Copia de respaldo y restauración de datos: admite copias de respaldo, exportación, importación y restauración de datos para cumplir con los requisitos del entorno de producción.
- Gestión distribuida: proporciona el modo de clúster para gestionar automáticamente múltiples nodos de base de datos.
Almacenamiento basado en columnas y compresión de datos
ClickHouse es una base de datos que utiliza almacenamiento basado en columnas. Los datos se organizan por columna. Los datos en la misma columna se almacenan juntos, y los datos en columnas diferentes se almacenan en archivos diferentes.
Durante la consulta de datos, el almacenamiento en columna puede reducir el rango de exploración de datos y el tamaño de transmisión de datos, mejorando así la eficiencia de la consulta de datos.
En un sistema de base de datos tradicional basado en filas, los datos se almacenan en la secuencia de Tabla 1:
row |
ID |
Flag |
Name |
Event |
Time |
---|---|---|---|---|---|
0 |
12345678901 |
0 |
name1 |
1 |
2020/1/11 15:19 |
1 |
32345678901 |
1 |
name2 |
1 |
2020/5/12 18:10 |
2 |
42345678901 |
1 |
name3 |
1 |
2020/6/13 17:38 |
N |
... |
... |
... |
... |
... |
En una base de datos basada en filas, los datos de la misma fila se almacenan físicamente juntos. En un sistema de base de datos basado en columnas, los datos se almacenan en la secuencia de Tabla 2:
row: |
0 |
1 |
2 |
N |
---|---|---|---|---|
ID: |
12345678901 |
32345678901 |
42345678901 |
... |
Flag: |
0 |
1 |
1 |
... |
Name: |
name1 |
name2 |
name3 |
... |
Event: |
1 |
1 |
1 |
... |
Time: |
2020/1/11 15:19 |
2020/5/12 18:10 |
2020/6/13 17:38 |
... |
Este ejemplo muestra solo la disposición de los datos en una base de datos de columnas. Las bases de datos de columnas almacenan los datos en la misma columna juntas y los datos en diferentes columnas por separado. Las bases de datos de columnas son más adecuadas para escenarios de procesamiento analítico en línea (OLAP).
Ejecutor vectorizado
ClickHouse utiliza datos múltiples de instrucciones únicas (SIMD) de la CPU para implementar la ejecución vectorizada. SIMD es un modo de implementación que utiliza una única instrucción para operar múltiples piezas de datos y mejora el rendimiento con paralelismo de datos (otros métodos incluyen paralelismo a nivel de instrucción y paralelismo a nivel de subproceso). El principio de SIMD es implementar operaciones de datos en paralelo a nivel de registro de CPU.
Modelo relacional y consulta SQL
ClickHouse utiliza SQL como lenguaje de consulta y proporciona API de consulta SQL estándar para que los sistemas de visualización de análisis de terceros se integren fácilmente con ClickHouse.
Además, ClickHouse utiliza un modelo relacional. Por lo tanto, el costo de migrar el sistema construido en una base de datos relacional tradicional o almacén de datos a ClickHouse es menor.
Particionamiento de datos y consulta distribuida
El clúster ClickHouse consta de una o más particiones, y cada partición corresponde a un nodo de servicio de ClickHouse. El número máximo de particiones depende del número de nodos (una partición corresponde a un solo nodo de servicio).
ClickHouse presenta los conceptos de tabla local y tabla distribuida. Una tabla local es equivalente a una partición de datos. Una tabla distribuida en sí misma no almacena ningún dato. Es un proxy de acceso de la tabla local y funciona como middleware de partición. Con la ayuda de tablas distribuidas, se puede acceder a múltiples particiones de datos usando el proxy, implementando así una consulta distribuida.
Aplicaciones de ClickHouse
ClickHouse es la abreviatura de Click Stream y Data Warehouse. Inicialmente se aplica a una herramienta de análisis de tráfico web para realizar análisis OLAP para almacenes de datos basados en flujos de eventos de clic en la página. Actualmente, ClickHouse es ampliamente utilizado en publicidad en Internet, análisis de tráfico de aplicaciones y web, telecomunicaciones, finanzas e Internet de las cosas (IoT). Es aplicable a escenarios de aplicaciones de inteligencia empresarial y tiene un gran número de aplicaciones y prácticas en todo el mundo. Para obtener más información, visite https://clickhouse.tech/docs/en/introduction/adopters/.
Funciones mejoradas de código abierto de ClickHouse
ClickHouse de MRS tiene ventajas como el modo de clúster automático, , despliegue de HA, y escalamiento suave y elástico.
- Modo de clúster automático
Como se muestra en Figura 1, un clúster consta de múltiples nodos de ClickHouse que no tiene nodo central. Es más bien un fondo de recursos estático. Si se utiliza el modo de clúster de ClickHouse para los servicios, debe predefinir la información del clúster en el archivo de configuración de cada nodo. Solo de esta manera se puede acceder correctamente a los servicios.Los usuarios desconocen las particiones de datos y el almacenamiento de réplicas en sistemas de bases de datos comunes. Sin embargo, ClickHouse le permite planificar y definir de forma proactiva configuraciones detalladas como fragmentos, particiones y ubicaciones de réplicas. La instancia de ClickHouse de MRS empaqueta el trabajo de manera unificada y lo adapta al modo automático, implementando una gestión unificada, que es flexible y fácil de usar. Una instancia de ClickHouse consta de tres nodos de ZooKeeper y varios nodos de ClickHouse. El modo de réplica dedicada se utiliza para garantizar una alta confiabilidad de las copias de datos duales.Figura 2 Estructura del clúster de ClickHouse
- Escala lisa y elástica
A medida que el negocio crece rápidamente, MRS proporciona ClickHouse, una herramienta de migración de datos, para escenarios como la capacidad de almacenamiento del clúster o los recursos de cómputo de la CPU que se acercan al límite. Esta herramienta se utiliza para migrar algunas particiones de una o varias tablas de MergeTree en varios nodos de ClickHouseServer a las mismas tablas en otros nodos de ClickHouseServer. De esta manera, se garantiza la disponibilidad del servicio y se implementa una expansión de la capacidad sin problemas.
Cuando agregue nodos de ClickHouse a un clúster, utilice esta herramienta para migrar algunos datos de los nodos existentes a los nuevos para equilibrar los datos después de la expansión.
- Arquitectura de despliegue de HA
MRS utiliza la arquitectura de implementación de alta disponibilidad (HA) basada en ELB para distribuir automáticamente el tráfico de acceso de usuario a múltiples nodos de back-end, ampliando las capacidades de servicio a sistemas externos y mejorando la tolerancia a fallas. Como se muestra en Figura 3, cuando una aplicación de cliente solicita un clúster, se utiliza Elastic Load Balance (ELB) para distribuir el tráfico. Con el mecanismo de sondeo de ELB, los datos se escriben en tablas locales y se leen de tablas distribuidas en diferentes nodos. De esta manera, se garantiza la carga de lectura/escritura de datos y la alta disponibilidad de acceso a la aplicación.
Después de aprovisionar el clúster de ClickHouse, cada nodo de instancia de ClickHouse del clúster corresponde a una réplica y dos réplicas forman una partición lógica. Por ejemplo, al crear una tabla ReplicatedMergeTree, puede especificar particiones para que los datos se sincronicen automáticamente entre dos réplicas en la misma partición.
Relación entre ClickHouse y otros componentes
ClickHouse depende de ZooKeeper para instalación y despliegue.
Las aplicaciones informáticas de flujo de Flink se utilizan para generar datos de informe comunes (tablas planas de detalle) y escribir los datos de informe en ClickHouse en tiempo casi real. Los trabajos de Hive/Spark se utilizan para generar datos de informes comunes (tablas planas de detalle) e importar los datos por lotes a ClickHouse.
Actualmente ClickHouse no admite la interconexión con Kafka en modo normal ni HDFS en modo de seguridad.