ClickHouse es un DBMS (sistema de gestión de bases de datos en columnas) de código abierto orientado a columnas para el procesamiento analítico en línea (OLAP).
Desarrollador (es) | Yandex |
---|---|
Versión inicial | 15 de junio de 2016 |
Lanzamiento estable | v20.11.3.3-estable / 13 de noviembre de 2020 [1] |
Versión de vista previa | v20.7.1.4310 / 8 de agosto de 2020 [2] |
Repositorio | github |
Escrito en | C ++ |
Sistema operativo | Linux , FreeBSD , macOS |
Licencia | Licencia Apache 2.0 |
Sitio web | clickhouse |
ClickHouse fue desarrollado por la empresa rusa de TI Yandex para el servicio de análisis web Yandex.Metrica . [3] [4] [5] [6] ClickHouse permite el análisis de datos que se actualizan en tiempo real. El sistema se comercializa por su alto rendimiento. [7]
El proyecto fue lanzado como software de código abierto bajo la licencia Apache 2 en junio de 2016. [8]
ClickHouse es utilizado por la herramienta de prueba de carga Yandex.Tank. [8] Yandex.Market usa ClickHouse para monitorear la accesibilidad del sitio y los KPI. [9] ClickHouse también se implementó en el experimento LHCb del CERN [10] para almacenar y procesar metadatos en 10 mil millones de eventos con más de 1000 atributos por evento, y Tinkoff Bank usa ClickHouse como un almacén de datos para un proyecto. [11]
Historia
Yandex.Metrica utilizó anteriormente un enfoque clásico, cuando los datos sin procesar se almacenaban en forma agregada. [12] Este enfoque puede ayudar a reducir la cantidad de datos almacenados. Sin embargo, tiene varias limitaciones y desventajas:
- La lista de informes disponibles debe estar predeterminada y no hay forma de hacer un informe personalizado.
- El volumen de datos puede aumentar después de la agregación. Esto sucede cuando los datos se agregan mediante una gran cantidad de claves o cuando se utilizan claves con alta cardinalidad (como las URL ).
- Es difícil admitir la coherencia lógica en los informes con diferentes agregaciones.
Un enfoque diferente es almacenar datos no agregados. El procesamiento de datos brutos requiere un sistema de alto rendimiento, ya que todos los cálculos se realizan en tiempo real. Para resolver este problema, se necesita un DBMS orientado a columnas que pueda manejar datos analíticos en la escala de toda Internet . Yandex comenzó a desarrollar el suyo propio. El primer prototipo de ClickHouse apareció en 2009. A finales de 2014, se lanzó la versión 2.0 de Yandex.Metrica. La nueva versión tiene una interfaz para crear informes personalizados y utiliza ClickHouse para almacenar y procesar datos.
Características
Las principales características del DBMS de ClickHouse son: [13]
- Verdadero DBMS orientado a columnas . No se almacena nada con los valores. Por ejemplo, se admiten valores de longitud constante para evitar almacenar su "número" de longitud junto a los valores.
- Escalabilidad lineal. Es posible extender un clúster agregando servidores.
- Tolerancia a fallos. El sistema es un grupo de fragmentos, donde cada fragmento es un grupo de réplicas. ClickHouse utiliza la replicación asincrónica de varios maestros. Los datos se escriben en cualquier réplica disponible y luego se distribuyen a todas las réplicas restantes. ZooKeeper se utiliza para coordinar procesos, pero no participa en el procesamiento y la ejecución de consultas.
- Capacidad para almacenar y procesar petabytes de datos.
- Soporte SQL . ClickHouse admite un lenguaje extendidosimilar a SQL que incluye matrices y estructuras de datos anidadas,funcionesaproximadas y de URI , y la disponibilidad para conectar un almacén de clave-valor externo.
- Alto rendimiento. [14]
- Se utilizan cálculos vectoriales. Los datos no solo se almacenan en columnas, sino que se procesan mediante vectores (partes de columnas). Este enfoque le permite lograr un alto rendimiento de la CPU .
- Se admiten muestreos y cálculos aproximados.
- El procesamiento de consultas en paralelo y distribuido está disponible (incluidas las JOIN ).
- Compresión de datos.
- Optimización de la unidad de disco duro (HDD). El sistema puede procesar datos que no caben en la memoria de acceso aleatorio (RAM).
- Clientes para conectividad de bases de datos (DB). Las opciones de conexión a la base de datos incluyen el cliente de consola, la API HTTP o uno de los contenedores (los contenedores están disponibles para Python , PHP , [15] NodeJS , [16] Perl , [17] Ruby [18] y R [19] ). También hay disponible un controlador JDBC para ClickHouse. [20]
- Documentación detallada.
Limitaciones
ClickHouse tiene algunas características que pueden considerarse desventajas:
- No hay soporte para transacciones .
- De forma predeterminada, al realizar agregaciones, los estados intermedios de la consulta deben caber en la RAM de un solo servidor, sin embargo, ClickHouse se puede configurar para que se derrame en el disco en tal caso.
- Falta de una implementación completa de ACTUALIZAR / ELIMINAR.
[21]
Casos de uso
ClickHouse fue diseñado para consultas OLAP . [13]
- Funciona con una pequeña cantidad de tablas que contienen una gran cantidad de columnas.
- Las consultas pueden utilizar una gran cantidad de filas extraídas de la base de datos , pero solo un pequeño subconjunto de columnas.
- Las consultas son relativamente raras (generalmente alrededor de 100 RPS por servidor).
- Para consultas simples, se permiten latencias de aproximadamente 50 ms.
- Los valores de columna son bastante pequeños, por lo general constan de números y cadenas cortas (por ejemplo, 60 bytes por URL ).
- Se requiere un alto rendimiento al procesar una sola consulta (hasta miles de millones de filas por segundo por servidor).
- El resultado de una consulta se filtra o se agrega principalmente.
- La actualización de datos utiliza un escenario simple (generalmente solo por lotes, sin transacciones complicadas).
Uno de los casos comunes de ClickHouse es el análisis de registros del servidor. Después de configurar cargas de datos regulares en ClickHouse (se recomienda insertar datos en lotes bastante grandes con más de 1000 filas), es posible analizar incidentes con consultas instantáneas o monitorear las métricas de un servicio, como tasas de error, tiempos de respuesta, etc.
ClickHouse también se puede utilizar como un almacén de datos interno para analistas internos. ClickHouse puede almacenar datos de diferentes sistemas (como Hadoop o ciertos registros) y los analistas pueden crear cuadros de mando internos con los datos o realizar análisis en tiempo real con fines comerciales.
Resultados comparativos
Según las pruebas de referencia realizadas por los desarrolladores, [14] para consultas OLAP, ClickHouse es más de 100 veces más rápido que Hive (un DBMS basado en la pila de tecnología Hadoop ) o MySQL (un RDBMS común ).
Ver también
- Lista de DBMS orientados a columnas
Referencias
- ^ "Versión de Github v20.11.3.3-estable" . Github . Consultado el 17 de noviembre de 2020 .
- ^ "Lanzamientos" . Github . Consultado el 2 de septiembre de 2019 .
- ^ "Estadísticas de uso y participación de mercado de las herramientas de análisis de tráfico para sitios web, noviembre de 2016" . w3techs.com . Consultado el 10 de noviembre de 2016 .
- ^ Datanyze. "Informe de cuota de mercado de Analytics | Análisis de la competencia | Google Analytics, Google Universal Analytics, Yandex Metrica" . Datanyze . Archivado desde el original el 21 de octubre de 2016 . Consultado el 10 de noviembre de 2016 .
- ^ Wappalyzer (30 de diciembre de 2011). "Analítica" . wappalyzer.com . Archivado desde el original el 12 de mayo de 2017 . Consultado el 10 de noviembre de 2016 .
- ^ "Analytics - SEOMON.com" . seomon.com . Consultado el 10 de noviembre de 2016 .
- ^ "ClickHouse: DBMS distribuido de alto rendimiento para análisis | Percona Live Amsterdam - Conferencia de base de datos de código abierto 2016" . www.percona.com . Consultado el 10 de noviembre de 2016 .
- ^ a b "Яндекс открывает ClickHouse" . Consultado el 10 de noviembre de 2016 .
- ^ "Здоровье Маркета: как мы превращаем логи в графики, Дмитрий Андреев (Яндекс) - События Яндекса" . events.yandex.ru . Consultado el 10 de noviembre de 2016 .
- ^ "Yandex - Yandex lanza herramienta de búsqueda para eventos del LHC en el CERN" . Yandex . Consultado el 10 de noviembre de 2016 .
- ^ "Сравнение аналитических en memoria баз данных" . Consultado el 10 de noviembre de 2016 .
- ^ "Эволюция структур данных в Яндекс.Метрике" . Consultado el 10 de noviembre de 2016 .
- ^ a b "Guía de ClickHouse" . clickhouse.yandex . Consultado el 10 de noviembre de 2016 .
- ^ a b "Comparación de rendimiento de DBMS analíticos" . clickhouse.yandex . Consultado el 10 de noviembre de 2016 .
- ^ "smi2 / phpClickHouse" . GitHub . Consultado el 10 de noviembre de 2016 .
- ^ "apla / node-clickhouse" . GitHub . Consultado el 10 de noviembre de 2016 .
- ^ "elcamlost / perl-DBD-ClickHouse" . GitHub . Consultado el 10 de noviembre de 2016 .
- ^ "archan937 / clickhouse" . GitHub . Consultado el 10 de noviembre de 2016 .
- ^ "hannesmuehleisen / clickhouse-r" . GitHub . Consultado el 10 de noviembre de 2016 .
- ^ "yandex / clickhouse-jdbc" . GitHub . Consultado el 10 de noviembre de 2016 .
- ^ Diferencia entre C y C ++
enlaces externos
- Sitio web oficial de ClickHouse