Apache Pinot este un depozit de date OLAP distribuit în timp real
Apache Pinot este o soluție de stocare OLAP distribuită, în timp real, concepută pentru a oferi analize scalabile, cu latență redusă și în timp real.
Poate ingera date din surse de date batch (cum ar fi HDFS, S3, Azure Data Lake, Google Cloud Storage), precum și din surse de streaming (cum ar fi Kafka). Pinot este conceput pentru a scala pe orizontală, astfel încât se poate scala la seturi de date mai mari și rate de interogare mai mari, după cum este necesar.
Despre Apache Pinot
Proiectul Pinot a fost dezvoltat inițial de LinkedIn și în 2015 a fost transferat către Fundația Apache pentru dezvoltare comună ulterioară. Stocarea este concepută să funcționeze într-un mediu în care date noi sunt adăugate constant și este proiectată pentru a oferi o latență minimă și previzibilă, permițând utilizarea sa pentru procesarea interogărilor în timp real.
Ca majoritatea celorlalte depozite de date și soluții de depozitare a datelor OLAP, Pinot acceptă un limbaj de interogare asemănător SQL , care permite selecția, agregarea, filtrarea, gruparea, sortarea și alte interogări de date.
Apache Pinot oferă scalabilitate orizontală și un mijloc de a obține toleranță la erori și supraviețuire împotriva defecțiunilor software și hardware. Procesele de replicare și backup sunt integrate direct în ciclul de procesare a datelor adăugate în depozitul de date. Pe de o parte, această abordare simplifică semnificativ arhitectura, dar, pe de altă parte, introduce o întârziere între adăugarea datelor și disponibilitatea acestora pentru interogare.
Datele sunt stocate în tabele într-o bază de date orientată pe coloane, fiind acceptate diverse scheme de compresie și posibilitatea de a plasa mai multe valori într-un câmp. Pinot oferă un sistem de indexare conectabil care poate utiliza diverse tehnologii de indexare (index ordonat, index bitmap, index inversat, index StarTree, filtru Bloom, index de interval, index de căutare text (Lucence/FST), index JSON, index geospațial).
Dintre caracteristicile care ies în evidență de la Apache Pinot:
- Orientat pe coloană– O bază de date orientată pe coloane cu diverse scheme de compresie, cum ar fi lungimea de rulare și lungimea de biți fixă.
- Indexare conectabilă: tehnologii de indexare conectabile, index sortat, index bitmap, index inversat.
- Optimizarea interogărilor- Abilitatea de a optimiza interogarea/planul de execuție pe baza metadatelor de interogare și segment.
- Ingestie de fluxuri și loturi: Asimilare aproape în timp real a fluxurilor Hadoop și asimilare în loturi.
- Interogare: Motor de execuție a interogărilor bazat pe SQL.
- Upsert în timpul ingerării în timp real: actualizați datele la scară cu consecvență
- Câmpuri cu mai multe valori: suport pentru câmpuri cu mai multe valori, permițându-vă să interogați câmpurile ca valori separate prin virgulă.
- Cloud nativ pe Kubernetes: Helm Chart oferă o implementare în cluster scalabilă orizontal, tolerantă la erori, care este ușor de gestionat cu Kubernetes.
Noua versiune Apache Pinot
Merită menționat faptul că recent a fost lansată versiunea 1.0 a Apache Pinot , care a rezumat, practic, multă muncă depusă pentru stabilizarea bazei de cod și luarea în considerare a dorințelor comunității (au fost luate în considerare peste 300 de comentarii).
În plus, merită menționat faptul că noul Motor de Interogări Multi-Etape și-a atins întregul potențial , permițând suport pentru îmbinări de tabele (JOIN). Motorul utilizat inițial a funcționat excelent cu operațiuni simple de filtrare și agregare, dar pentru a asigura timpi previzibili de execuție a interogărilor, nu a suportat operațiuni de unire a tabelelor.
Noul motor include etape intermediare pentru procesarea interogărilor complexe, iar semantica sa SQL este apropiată de cea a standardului ANSI SQL . În plus, noua versiune oferă suport nativ pentru procesarea datelor JSON, oferă suport pentru valoarea „NULL”, se integrează cu Apache Spark 3.x și îmbunătățește implementarea tabelelor în modul Upsert (adăugând compresia segmentelor și oferind suport pentru operațiuni de ștergere).
În cele din urmă, dacă sunteți interesați să aflați mai multe , trebuie să știți că codul proiectului este scris în Java și distribuit sub licența Apache. Puteți găsi detalii despre noua versiune la următorul link.