Reading Time: 6 minutes

Negli anni Seacom ha sviluppato e coltivato partnership con fornitori di prodotti tecnologici di tipo enterprise con cui tutti noi condividiamo la scelta dell’approccio opensource e con cui collaboriamo, sia con implementazione per i nostri clienti di soluzioni ad hoc basate sui loro prodotti sia aggiungendo valore ai prodotti espandendone le funzionalità.
Questa filosofia collaborativa è stata da noi sempre coltivata, considerandola una nostra attitudine, ed applicata  su varie tecnologie opensource come Dremio, Elastic, Kafka ed altre ancora.
Nella nostra missione di tecnici Seacom c’è anche quella di rispondere alle esigenze non coperte nativamente dai prodotti selezionati, esplorandone tutte le opportunità di estensione ed offrendo il proprio contributo nell’evoluzione e  nell’integrazione degli stack tecnologici coinvolti.

In questo articolo presento l’applicativo PgAdapter che va ad estendere le funzionalità della piattaforma Dremio e fornisce un accesso PostgreSQL ai dati affiancandosi ai protocolli ODBC, JDBC, Rest e Arrow Flight già forniti dalla soluzione Dremio.
Il componente è stato sviluppato da noi sviluppato per connettere Grafana e Dremio ma in realtà estende le possibilità di interazione tra  Dremio e  tanti altri software, anche NoSQL, muniti di connettore Postgres.
Ma andiamo a vedere tutto nel dettaglio.

Alcune premesse anche per i non tecnici

  • L’architettura client/server divide un singolo sistema tradizionale in un front-end e un back-end dove il carico di lavoro è distribuito tra il client e il server. Il software di comunicazione stabilisce il collegamento tra client e server e si interfaccia con il protocollo di comunicazione desiderato. Il server utilizza gli adapter per accedere alle origini dati.
    Nello specifico il server funge da fonte di dati e può accettare da più client richieste per l’accesso e la manipolazione dei dati; i client possono gestire i dati provenienti praticamente da qualsiasi sorgente dati interfacciandosi ad opportuni e specifici adapter che si frappongono nella comunicazione client/server isolando i dettagli dell’origine dati.
  • Dremio è una soluzione open source di data virtualization che permette l’ accesso a dati eterogenei in modalità self-service. Focalizzandoci nel contesto della Business Intelligence, Dremio consente, sia ai data analist che ai data scientist, la creazione di dashboard BI ad alte prestazioni e di eseguire analisi interattive direttamente sul data lake e data lakehouse che che ospita raccolte eterogene di dati in maniera sia centralizzata che distribuita.
    Dremio sfrutta Apache Arrow (per l’archiviazione in memoria di dati in formato colonnare ), Apache Parquet (per l’archiviazione su disco di dati in formato colonnare) e Apache Calcite (parser SQL, database adapter  e per l’ottimizzazione delle query ) e supporta direttamente un’ampia varietà di tipi di sorgenti, tra cui PostgreSQL.
  • Grafana è un’applicazione web opensource di analisi e visualizzazione interattiva multipiattaforma molto utilizzata in BI. Gli utenti finali possono creare dashboard di monitoraggio, grafici, alert connettendosi via web ai data source supportati tra cui PostgreSQL.
  • PostgreSQL, chiamato anche Postgres, è un sistema open source per la gestione di database relazionali a oggetti. Si basa sul tipico modello client-server: il componente centrale del server Postgres gestisce tutti i file di database e tutte le connessioni per la comunicazione (input e output) stabilite con il server di database. Gli utenti necessitano solo di un adeguato programma client per la connessione.

Notiamo che sia Dremio che Grafana supportano il protocollo PostgreSQL.

Obiettivo iniziale e valutazione degli approcci possibili

L’esigenza che ha dettato lo sviluppo del PgAdapter è stata la necessità di integrare all’interno di un progetto commissionatoci il software di BI Grafana con la piattaforma di Data Virtualization Dremio, possibilità non prevista attualmente dalle due tecnologie.

Dopo varie ricerche  abbiamo deciso, all’interno del team tecnico Seacom, di proseguire l’attività sviluppando internamente la soluzione ed abbiamo reputato percorribili tre possibili strade:

  • sfruttare le funzionalità Foreign Data Wrapper disponibili in PostgreSQL per richiamare ed integrare sul backend le chiamate JDBC/ODBC verso il server Dremio.
  • realizzare un plugin verticale in Grafana e così aggiungere un nuovo data source a quelli già esistenti
  • estendere le capability di Dremio di interazione con il dato per aggiungere alle dialettiche possibili di Dremio il protocollo Postgres realizzando un componente esterno.

Occorreva ora scegliere quale strada seguire. Le prime due soluzioni sono sufficienti per la specifica esigenza iniziale ma la terza soluzione ha il pregio strategico di estendere le potenzialità di comunicazione di Dremio verso tanti altri software muniti di connettore PostgreSQL.
Naturalmente abbiamo scelto di investire sul progetto e di implementare la terza soluzione nella prospettiva di utilizzarla in futuro in nuovi progetti e per nuovi clienti interessati anche ad altri software di BI.

Presentazione tecnica del PGAdapter

PGAdapter è un proxy scritto in Java che implementa al suo interno il PostgreSQL Wire Protocol e gira su un server intermedio tra l’applicazione di BI e il server di Dremio, secondo la logica client/server anticipata nelle premesse. Quando è in esecuzione, localmente o in remoto, sta in ascolto su una porta e qualsiasi client Postgres può collegarsi ed effettuare delle query. Ogni client vede il PgAdapter come un vero e proprio server Postgres.

Per una corretta interpretazione e traduzione delle query abbiamo realizzato un motore semantico che prende in esame ogni query che viene spedita al PgAdapter, se è necessario ne modifica la sintassi SQL e traduce il Postgres Wire Protocol nell’equivalente utilizzato da Dremio. La traduzione delle query per la maggior parte dei casi è una semplice trasformazione del PostgresWire Protocol, ad eccezione delle query sui metadati che invece vengono completamente o in parte riscritte.

Infine sfruttando il driver ODBC ogni query elaborata viene inviata a Dremio.

Sfruttando la stessa logica, PGAdapter invia a Grafana i risultati delle query restituiti da Dremio.

Il PGAdapter si occupa anche della semplificazione e gestione del tool di connessione e della sicurezza.
Quest’ultima è garantita dalla possibilità di effettuare connessioni sicure grazie al protocollo TLS  e dall’autenticazione attraverso gli user e le password che vengono ereditati direttamente dai client.

 

Riepilogando…

Partendo dall’esigenza iniziale di connettere Grafana e Dremio, il PgAdapter traduce  le query inviate da Grafana ed invia le richieste a Dremio. Il PgAdapter si occupa anche di inviare il risultato delle query a Grafana, della gestione delle connessioni e della sicurezza.  E così grazie ad esso i due software, il tool di BI e Dremio, sono completamente integrati in modo efficente e sicuro.

 

Vuoi saperne di più sul PGAdapter oppure sei interessato a sviluppare una nuova integrazione? Contattaci,  valuteremo insieme l’opportunità di utilizzo o di creazione di un nuovo adapter.