paint-brush
14 analizadores SQL de código abiertopor@vrajat
29,270 lecturas
29,270 lecturas

14 analizadores SQL de código abierto

por Rajat Venkatesh2021/10/08
Read on Terminal Reader
Read this story w/o Javascript

Demasiado Largo; Para Leer

El historial de consultas de un almacén de datos es una rica fuente de información para saber cómo se utilizan los datos en su organización. Muchos aspectos de la observabilidad de los datos se pueden rastrear analizando el historial de consultas. Estas estadísticas también ayudan a automatizar las tareas comunes de ingeniería de datos, como la copia de seguridad y la recuperación ante desastres. No hay un analizador de SQL para los dialectos de todas las bases de datos y almacenes de datos populares. Hay varios proyectos que mantienen analizadores para bases de datos de código abierto populares como Postgres y MySQL. Para las bases de datos comerciales, la única opción es aplicar ingeniería inversa a la gramática completa.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - 14 analizadores SQL de código abierto
Rajat Venkatesh HackerNoon profile picture

El análisis de consultas SQL proporciona superpoderes para monitorear el estado de los datos. Esta publicación describe cómo comenzar a analizar SQL para la observabilidad de los datos.


El historial de consultas de un almacén de datos es una rica fuente de información para saber cómo se utilizan los datos en su organización. Muchos aspectos de la observabilidad de los datos se pueden rastrear analizando el historial de consultas. Por ejemplo, el análisis del historial de consultas puede extraer:

  • Tablas y columnas populares
  • Tablas y columnas no utilizadas
  • Linaje a nivel de columna
  • Frescura


Estas estadísticas también ayudan a automatizar tareas comunes de ingeniería de datos como:

  • Copia de seguridad y recuperación ante desastres
  • Problemas de calidad de datos de clasificación
  • Realice un seguimiento de los datos confidenciales y cómo se utilizan.

Desafíos y enfoques

El lenguaje SQL es un estándar ISO/IEC y la última versión es SQL2016 . Sin embargo, cada base de datos implementa el estándar de manera diferente, usa diferentes nombres de función para la misma operación y tiene extensiones para acceder a funciones personalizadas específicas. Por lo tanto, no hay un analizador de SQL para los dialectos de todas las bases de datos y almacenes de datos populares.


Las expresiones regulares son un método popular para extraer información de sentencias SQL. Sin embargo, las expresiones regulares rápidamente se vuelven demasiado complejas para manejar funciones comunes como CON, subconsultas, cláusulas de Windows, alias y comillas. sqlparse es un paquete popular de Python que usa expresiones regulares para analizar SQL.


Un enfoque alternativo es implementar la gramática SQL usando generadores de analizadores como ANTLR . Hay generadores de analizadores de código abierto similares en otros lenguajes populares. Hay varios proyectos que mantienen analizadores para bases de datos de código abierto populares como MySQL y Postgres. Para otras bases de datos de código abierto, la gramática se puede extraer del proyecto de código abierto. Para las bases de datos comerciales, la única opción es aplicar ingeniería inversa a la gramática completa. Existen plataformas de analizador/optimizador de SQL como Apache Calcite que ayudan a reducir el esfuerzo de implementar el dialecto SQL de su elección.

Analizadores de código abierto

Algunas bases de datos de código abierto y almacenes de datos populares son:

MySQL/Maria DB

  • El analizador Pingcap es un analizador MySQL en Go.
  • SQL Parser en phpmyadmin es un lexer y analizador SQL de validación con un enfoque en el dialecto de MySQL.

postgres

libpg_query extrae el analizador (escrito en C) del proyecto Postgres y lo empaqueta como una biblioteca independiente. Esta biblioteca está envuelta en otros idiomas por otros proyectos como:

Múltiples motores

  • queryparser implementa los dialectos Apache Hive, Presto/Trino y Vertica.
  • zetasql implementa los dialectos de BigQuery, Spanner y Dataflow.

Analizadores genéricos

Plataformas

Las plataformas Parser/Optimizer implementan las características comunes del lenguaje SQL y permiten la personalización como una característica de primera clase de la plataforma. Dos proyectos populares de código abierto son:

  • Apache Calcite es un analizador/optimizador popular que se usa en bases de datos populares y motores de consulta como Apache Hive , BlazingSQL y muchos otros .
  • JSQLParser puede analizar múltiples dialectos SQL como MySQL, Postgres y Oracle. La gramática se puede modificar para admitir otros dialectos de SQL.

Apache Calcite permite personalizaciones en varios puntos del proceso de análisis.

  • Las reglas del analizador se pueden cambiar para admitir una sintaxis personalizada.
  • Convenciones como comillas frente a comillas dobles, distinción entre mayúsculas y minúsculas.
  • Agregar reglas de optimización.

Apache Calcite también proporciona visitantes para atravesar el plan de ejecución de SQL. El patrón de visitantes es un algoritmo para atravesar un plan SQL.

Consejos prácticos para empezar

Hay muchos analizadores SQL de código abierto abandonados. El primer filtro es utilizar un proyecto que será compatible en el futuro. Para bases de datos populares como Postgres y MySQL/MariaDB, hay analizadores disponibles en múltiples lenguajes de programación.


¿Qué pasa si no hay un analizador para su base de datos?


La mayoría de los equipos no crean un analizador desde cero. Una opción popular es usar el analizador de Postgres y luego agregar una sintaxis SQL personalizada. AWS Redshift, Vertica y DuckDB son ejemplos. Utilice un analizador SQL de Postgres para analizar el historial de consultas de estas bases de datos para analizar la mayoría de las consultas.


Muchas consultas no se analizarán, como UNLOAD en AWS Redshift. Si es importante analizar también las variantes, considere modificar los proyectos para aceptar la gramática personalizada O use una plataforma como Apache Calcite.

Conclusión

Existe una demanda de analizadores de SQL para generar informes sobre el uso de bases de datos o almacenes de datos. Hay una serie de buenos proyectos de código abierto. Sin embargo, hay una curva de aprendizaje empinada para usar estos proyectos y, en muchos casos, es posible que un proyecto no se ajuste a sus requisitos específicos.

¿Tiene problemas para analizar el historial de consultas? Ponerse en contacto


También publicado en Tokern .