
Apache Pinot to rozproszona hurtownia danych OLAP działająca w czasie rzeczywistym
Apacz Pinot Jest to rozwiązanie pamięci masowej OLAP rozproszone, zaprojektowane w czasie rzeczywistym, wykorzystywane do dostarczania skalowalnych analiz w czasie rzeczywistym przy małych opóźnieniach.
Może pozyskiwać dane ze źródeł danych wsadowych (takich jak HDFS, S3, Azure Data Lake, Google Cloud Storage), a także ze źródeł strumieniowych (takich jak Kafka). Pinot zaprojektowano z myślą o skalowaniu w poziomie, dzięki czemu w razie potrzeby można skalować do większych zestawów danych i większej liczby zapytań.
O Apache Pinot
Projekt Pinot został pierwotnie opracowany przez LinkedIn a w 2015 roku został przekazany Fundacji Apache w celu dalszego wspólnego rozwoju. Pamięć masową zaprojektowano do działania w środowisku, w którym stale dodawane są nowe dane, i zaprojektowano ją tak, aby zapewniała minimalne i przewidywalne opóźnienia, umożliwiając wykorzystanie pamięci do przetwarzania zapytań w czasie rzeczywistym.
Podobnie jak większość innych hurtowni danych i rozwiązań do przechowywania danych OLAP, Pinot obsługuje język zapytań podobny do SQL który obsługuje selekcję, agregację, filtrowanie, grupowanie, sortowanie i odrębne zapytania o dane.
Apacz Pinot zapewnia skalowalność poziomą i zapewnia środki do osiągnięcia odporności na błędy i odporność na błędy oprogramowania i sprzętu. Procesy replikacji i tworzenia kopii zapasowych integrowane są bezpośrednio z cyklem przetwarzania danych dodawanych do hurtowni. Z jednej strony takie podejście pozwala znacznie uprościć architekturę, ale z drugiej strony powoduje opóźnienie pomiędzy dodaniem danych a ich dostępnością dla zapytań.
Dane przechowywane są w tabelach w bazie danych zorientowanej kolumnowo, Ponadto obsługiwanych jest kilka schematów kompresji i możliwość umieszczenia wielu wartości w polu. Pinot zapewnia podłączany system indeksowania, który może wykorzystywać różne technologie indeksowania (indeks posortowany, indeks bitmapy, indeks odwrócony, indeks StarTree, filtr Blooma, indeks zakresu, indeks wyszukiwania tekstowego (Lucence/FST), indeks JSON, indeks geoprzestrzenny).
Z cech wyróżniających się z Apache Pinot:
- Orientacja kolumnowa– Baza danych zorientowana na kolumny z różnymi schematami kompresji, takimi jak długość przebiegu i stała długość bitów.
- Możliwość podłączenia indeksowania: Wtykowe technologie indeksowania, indeks sortowany, indeks bitmapowy, indeks odwrócony.
- Optymalizacja zapytań- Możliwość optymalizacji planu zapytań/wykonania w oparciu o metadane zapytań i segmentów.
- Przyjmowanie strumieni i partii: Pozyskiwanie strumieni Hadoop i przetwarzanie wsadowe w czasie zbliżonym do rzeczywistego.
- Zapytanie: Silnik wykonywania zapytań oparty na języku SQL.
- Upsert podczas przyjmowania w czasie rzeczywistym: aktualizuj dane na dużą skalę i z zachowaniem spójności
- Wiele pól wartości: obsługa pól wielowartościowych, umożliwiająca wysyłanie zapytań do pól jako wartości oddzielonych przecinkami.
- Natywny w chmurze na Kubernetesie: Wykres Helm zapewnia skalowalne poziomo, odporne na błędy wdrożenie klastrowe, którym można łatwo zarządzać za pomocą Kubernetes.
Nowa wersja Apache Pinot
Warto o tym wspomnieć niedawno Wydano wersję Apache Pinot 1.0, co w zasadzie podsumował wiele pracy, aby ustabilizować bazę kodu i uwzględnić życzenia społeczności (uwzględniono ponad 300 uwag).
Oprócz tego podkreślono, żee nowy silnik przetwarzania zapytanie wieloetapowe (Multi-Stage Query Engine) osiągnął swój pełny potencjał, co umożliwia zaimplementowanie obsługi łączenia tabel (JOIN). Zastosowany silnik początkowo spisał się znakomicie przy prostych operacjach filtrowania i agregacji, jednak aby zapewnić przewidywalny czas wykonania zapytania, nie obsługiwał operacji łączenia tabel.
nowy silnik obejmuje pośrednie etapy złożonego przetwarzania zapytań, a semantyka SQL jest zbliżona do ANSI SQL. Dodatkowo nowa wersja oferuje natywną obsługę przetwarzania danych w formacie JSON, zapewnia obsługę wartości „NULL”, integruje się z Apache Spark 3.x oraz usprawnia implementację tabel w trybie Upsert (dodanie kompresji segmentów i zapewnienie wsparcia dla eliminacji operacji ).
Wreszcie, jeśli jesteś zainteresowany w możliwości poznania więcej na ten temat, powinieneś wiedzieć, że kod projektu jest napisany w Javie i rozpowszechniany na licencji Apache. Możesz sprawdzić szczegóły nowej wersji w następujący link.