Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Snel - Argentina Big Data - Meetup

Snel - Argentina Big Data - Meetup

Snel is a columnar database featuring Just-In-Time query compilation for fast on-line analytics using LLVM to generate and compile queries on the fly.

Avatar for Cristian Adamo

Cristian Adamo

November 01, 2017

Other Decks in Technology

Transcript

  1. Grandata Snel Una base de datos para análisis online sobre

    grandes volúmenes de datos. Octubre 2017 1 Cristian Adamo /in/crisadamo
  2. Grandata Trabajamos con cientos de millones eventos anonimizados de telefónicas

    y bancos. Unimos ambas partes, generamos un grafo social y analizamos dichos datos aplicando diferentes algoritmos de Machine Learning. Luego nuestros clientes pueden explorar estos datos y utilizarlos para generar campañas. Grandata 2
  3. Grandata Agenda • Problema • Snel • Lenguaje SQL •

    Predicate pushdown evaluation • Storage Columnar • Generación y compilación de queries en tiempo real • Conclusiones y Q&A 3
  4. Grandata Problema Analizar y realizar agregaciones sobre millones de datos

    en tiempo real, con la mínima latencia posible, dentro de nuestra plataforma online de exploración de datos, Social Universe. 4
  5. Grandata Problema Primera versión • MySQL como motor de análisis

    (OLAP). Características de MySQL • Row-oriented storage. • Inserts y Selects simples, rápidos. • Set de agregaciones (Limitado). 5 Para agregaciones sobre millones de filas es lento
  6. Grandata Snel Snel = SQL Native Execution for LLVM Es

    una base de datos columnar embebida, con generación y compilación de queries online por medio LLVM y utiliza SQL como interface. El objetivo principal es minimizar los tiempos de respuestas de las queries (< 1s) Basado en el paper Efficiently Compiling Efficient Query Plans for Modern Hardware de Thomas Neumann. 6
  7. Grandata Snel El objetivo es maximizar la performance del sistema

    • Minimizar el acceso a memoria dejando los datos el mayor tiempo posible en los registros del CPU. (Mem-Read ~100ns, CPU Reg-Read ~1ns). • Explotar la localidad de los datos (temporal y espacial). • Mejorar la predicción de branching. • No romper el pipeline de ejecución del CPU (Minimizar CPU Hazards). • Reducir la cantidad de function calls (Method dispatch). 7 Muy rápido y eficiente
  8. Grandata Snel Análisis C++ vs LLVM • SQL: SELECT SUM(c1)

    FROM t1 WHERE c1 IS NOT NULL; • Dataset: 1B de filas. Tiempos • C++ ~1300ms • LLVM ~850ms • LLVM 1.5x más rápido 8 - LLVM - C++ Nota: las implementaciones no cuentan con ningún tipo de optimización. Ejecutadas sobre una notebook.
  9. Grandata Snel Principales features • Soporta un subset de SQL

    con agregaciones extras. • Predicate pushdown evaluation. • Storage columnar. • Generación y compilación de queries online utilizando LLVM. • Interface SQL por medio de SQLite CLI y driver JDBC. • Integración con Apache Spark. 9
  10. Grandata Lenguaje SQL Lenguaje SQL Standard: • Cláusulas WHERE con

    ANDs y ORs, y sub-queries. • JOIN, GROUP BY, ORDER BY y LIMIT. • Agregaciones: COUNT, COUNT(DISTINCT), SUM, AVG, MIN y MAX. Agregaciones extras: • Histogramas e Histogramas de rango fijo. • Histogramas en dos dimensiones. • Cálculo de percentiles. 10
  11. Grandata Predicate pushdown evaluation En la evaluación de un query,

    Snel mueve las operaciones de filtrado lo más cerca a los datos posibles, minimizando la cantidad de datos que se pasan de un operador al otro. Mejorando significativamente la performance de las queries. Ejemplo SELECT COUNT(*) FROM table1 WHERE int8col1 > 3 11
  12. Grandata Storage Columnar • Cada fila de una columna se

    guarda de forma contigua en disco. • Ideal para aplicaciones con gran demanda de Reads. • Óptimo para agregaciones y compresión. • Las columnas pueden ser vista como un gran array. (data locality) 12
  13. Grandata Generación y compilación de queries • Generación de queries

    utilizando código IR (Simil Assembly). • En cada query todos los operadores son inline (minimizando los function calls). • Compilación por medio de LLVM. 13 En una base de datos tradicional (volcano-model)
  14. Grandata Conclución Aplicando las diferentes técnicas de optimización presentadas, Snel

    resulta en un sistema performante y eficiente para el tipo de workloads que tenemos. Próximos pasos • Soporte para compresión de columnas. • Setup como sistema distribuído. • Aplicar otras técnicas de optimización. • Open-source. 15