14 Analitzadors SQL de codi obert

L’anàlisi de consultes SQL proporciona superpoders per supervisar la salut de les dades. Aquesta publicació descriu com començar a analitzar SQL per a l’observabilitat de les dades.

L’historial de consultes d’un magatzem de dades és una rica font d’informació per esbrinar com s’utilitzen les dades a la vostra organització. Es poden fer un seguiment de molts aspectes de l’observabilitat de les dades mitjançant l’anàlisi de l’historial de consultes. Per exemple, l’anàlisi de l’historial de consultes pot extreure:

  • Taules i columnes populars
  • Taules i columnes no utilitzades
  • Llinatge a nivell de columna
  • Frescor

Aquestes estadístiques també ajuden a automatitzar tasques comunes d’enginyeria de dades com:

  • Còpia de seguretat i recuperació de desastres
  • Triatge de problemes de qualitat de les dades
  • Feu un seguiment de les dades sensibles i de com s’utilitzen.

Reptes i enfocaments

El llenguatge SQL és un estàndard ISO/IEC i l’última versió és SQL2016. Tanmateix, cada base de dades implementa l’estàndard de manera diferent, utilitza diferents noms de funció per a la mateixa operació i té extensions per accedir a funcions personalitzades específiques. Per tant, no hi ha un analitzador SQL per als dialectes de totes les bases de dades i magatzems de dades populars.

Les expressions regulars són un enfocament popular per extreure informació de sentències SQL. Tanmateix, les expressions regulars es tornen ràpidament massa complexes per gestionar funcions comunes com WITH, subconsultes, clàusules de Windows, àlies i cometes. sqlparse és un paquet Python popular que utilitza expressions regulars per analitzar SQL.

Un enfocament alternatiu és implementar la gramàtica SQL mitjançant generadors d’analitzadors com ANTLR. Hi ha generadors d’analitzadors de codi obert similars en altres idiomes populars. Hi ha diversos projectes que mantenen analitzadors per a bases de dades de codi obert populars com MySQL i Postgres. Per a altres bases de dades de codi obert, la gramàtica es pot extreure del projecte de codi obert. Per a les bases de dades comercials, l’única opció és fer enginyeria inversa de la gramàtica completa. Hi ha plataformes analitzadores/optimitzadores SQL com Apache Calcite que ajuden a reduir l’esforç per implementar el dialecte SQL que trieu.

Analitzadors de codi obert

Algunes bases de dades i magatzems de dades de codi obert populars són:

MySQL/MariaDB

  • L’analitzador Pingcap és un analitzador de MySQL a Go.
  • SQL Parser a phpmyadmin és un lexer i analitzador SQL de validació centrat en el dialecte MySQL.

Postgres

libpg_query extreu l’analitzador (escrit en C) del projecte Postgres i l’empaqueta com una biblioteca autònoma. Aquesta biblioteca està embolicada en altres idiomes per altres projectes com:

Múltiples motors

  • queryparser implementa els dialectes Apache Hive, Presto/Trino i Vertica.
  • zetasql implementa els dialectes BigQuery, Spanner i Dataflow.

Analitzadors genèrics

Plataformes

Les plataformes Parser/Optimizer implementen les característiques comunes del llenguatge SQL i permeten la personalització com a característica de primera classe de la plataforma. Dos projectes de codi obert populars són:

Apache Calcite permet personalitzacions en diversos punts del procés d’anàlisi.

  • Les regles de l’analitzador es poden canviar per donar suport a la sintaxi personalitzada.
  • Convencions com ara cometes vs cometes dobles, distinció entre majúscules i minúscules.
  • Afegeix regles de l’optimitzador.

Apache Calcite també ofereix als visitants per recórrer el pla d’execució SQL. El patró de visitant és un algorisme per recórrer un pla SQL.

Consells pràctics per començar

Hi ha molts analitzadors SQL de codi obert abandonats. El primer filtre és utilitzar un projecte que tindrà suport en el futur. Per a bases de dades populars com Postgres i MySQL/MariaDB, hi ha analitzadors disponibles en diversos llenguatges de programació.

Què passa si no hi ha cap analitzador per a la vostra base de dades?

La majoria dels equips no creen un analitzador des de zero. Una opció popular és utilitzar l’analitzador de Postgres i després afegir una sintaxi SQL personalitzada. AWS Redshift, Vertica i DuckDB en són exemples. Utilitzeu un analitzador SQL de Postgres per analitzar l’historial de consultes d’aquestes bases de dades per analitzar la majoria de les consultes.

Moltes consultes no s’analitzaran, com ara DESCARREGAR a AWS Redshift. Si també és important analitzar les variants, considereu modificar els projectes per acceptar la gramàtica personalitzada O utilitzar una plataforma com Apache Calcite.

Conclusió

Hi ha una demanda d’analitzadors SQL per crear informes sobre l’ús de bases de dades o magatzems de dades. Hi ha una sèrie de bons projectes de codi obert. Tanmateix, hi ha una corba d’aprenentatge pronunciada per utilitzar aquests projectes i, en molts casos, és possible que un projecte no s’ajusti als vostres requisits específics.

Teniu problemes per analitzar l’historial de consultes? posar-se en contacte

També publicat a Tokern.

CÀRREGA
. . . comentaris & més!

Leave a Comment

Your email address will not be published. Required fields are marked *