Apache Pinot è un data warehouse OLAP distribuito in tempo reale
Apache Pinot è una soluzione di archiviazione OLAP distribuita in tempo reale, progettata per offrire analisi scalabili, a bassa latenza e in tempo reale.
È in grado di acquisire dati da fonti batch (come HDFS, S3, Azure Data Lake, Google Cloud Storage) e da fonti di streaming (come Kafka). Pinot è progettato per scalare orizzontalmente, quindi può adattarsi a set di dati più grandi e a frequenze di query più elevate, a seconda delle necessità .
A proposito di Apache Pinot
Il progetto Pinot è stato originariamente sviluppato da LinkedIn e nel 2015 è stato trasferito alla Apache Foundation per un ulteriore sviluppo congiunto. Il sistema di archiviazione è progettato per operare in un ambiente in cui vengono costantemente aggiunti nuovi dati ed è ingegnerizzato per fornire una latenza minima e prevedibile, consentendone l'utilizzo per l'elaborazione di query in tempo reale.
Come la maggior parte degli altri data warehouse e delle soluzioni OLAP di data warehousing, Pinot supporta un linguaggio di query simile a SQL che consente di effettuare selezioni, aggregazioni, filtraggi, raggruppamenti, ordinamenti e altre query sui dati.
Apache Pinot offre scalabilità orizzontale e un mezzo per raggiungere la tolleranza ai guasti e la resilienza contro malfunzionamenti software e hardware. I processi di replica e backup sono integrati direttamente nel ciclo di elaborazione dei dati aggiunti al data store. Da un lato, questo approccio semplifica notevolmente l'architettura, ma dall'altro introduce un ritardo tra l'aggiunta dei dati e la loro disponibilità per le query.
I dati vengono memorizzati in tabelle all'interno di un database orientato alle colonne, e sono supportati diversi schemi di compressione e la possibilità di inserire più valori in un campo. Pinot offre un sistema di indicizzazione modulare che può utilizzare varie tecnologie di indicizzazione (indice ordinato, indice bitmap, indice invertito, indice StarTree, filtro Bloom, indice di intervallo, indice di ricerca testuale (Lucence/FST), indice JSON, indice geospaziale).
Delle caratteristiche che contraddistinguono l'Apache Pinot:
- Orientato alla colonna– Un database orientato alle colonne con vari schemi di compressione come lunghezza di esecuzione e lunghezza di bit fissa.
- Indicizzazione collegabile: Tecnologie di indicizzazione collegabili, Indice ordinato, Indice bitmap, Indice invertito.
- Ottimizzazione delle query- Possibilità di ottimizzare il piano di query/esecuzione in base ai metadati di query e segmenti.
- Ingestione di flussi e batch: Ingestione quasi in tempo reale di flussi Hadoop e acquisizione batch.
- la consultazione: Motore di esecuzione delle query basato su SQL.
- Upsert durante l'importazione in tempo reale: aggiornare i dati su larga scala con coerenza
- Campi valore multipli: supporto per campi multivalore, che consente di interrogare i campi come valori separati da virgole.
- Cloud nativo su Kubernetes: Il grafico Helm fornisce una distribuzione in cluster scalabile orizzontalmente e con tolleranza agli errori facile da gestire con Kubernetes.
Nuova versione di Apache Pinot
Vale la pena ricordare che la versione 1.0 di Apache Pinot è stata rilasciata di recente , e in pratica riassume un gran numero di lavori volti a stabilizzare il codice sorgente e a tenere conto dei suggerimenti della community (sono stati presi in considerazione oltre 300 commenti).
Inoltre, è importante sottolineare che il nuovo motore di query multistadio ha raggiunto il suo pieno potenziale , consentendo il supporto per le unioni di tabelle (JOIN). Il motore inizialmente utilizzato offriva prestazioni eccellenti con semplici operazioni di filtraggio e aggregazione, ma per garantire tempi di esecuzione delle query prevedibili, non supportava le operazioni di join tra tabelle.
Il nuovo motore include fasi intermedie per l'elaborazione di query complesse e la sua semantica SQL è vicina allo standard ANSI SQL . Inoltre, la nuova versione offre supporto nativo per l'elaborazione di dati JSON, supporta il valore "NULL", si integra con Apache Spark 3.x e migliora l'implementazione delle tabelle in modalità Upsert (aggiungendo la compressione dei segmenti e fornendo supporto per le operazioni di eliminazione).
Infine, se siete interessati ad approfondire l'argomento , sappiate che il codice del progetto è scritto in Java e distribuito con licenza Apache. Potete trovare maggiori dettagli sulla nuova versione al seguente link.