🎯 Definicja

Apache Druid to wysokowydajna, rozproszona baza danych czasu rzeczywistego (Real-Time Analytics Database), zaprojektowana do błyskawicznych zapytań agregujących na dużych zbiorach danych (OLAP).

🔑 Kluczowe punkty

  • Sub-second queries: Odpowiedzi na zapytania analityczne w milisekundy, nawet przy petabajtach danych.
  • Streaming Ingestion: Natywna integracja z Kafką (czyta dane natychmiast po ich pojawieniu się).
  • Architektura: Kolumnowy zapis, indeksowanie bitmapowe, brak pełnych transakcji (UPDATE jest trudny/niemożliwy, to append-only system).

📚 Szczegółowe wyjaśnienie

Druid wypełnia lukę między Hurtownią Danych (Snowflake/BigQuery - wysoki latency, duża elastyczność) a bazami Key-Value (Redis - niski latency, brak analityki). Jest idealny do “User-Facing Analytics” – np. dashboardu dla klienta banku, który pokazuje jego wydatki z ostatnich 5 lat z podziałem na kategorie w ułamku sekundy.

Architektura:

  • Broker: Przyjmuje zapytania.
  • Historical: Przechowuje stare segmenty danych (Deep Storage).
  • MiddleManager: Przyjmuje strumień na żywo.

💡 Przykład zastosowania

Netflix używa Druida do monitorowania jakości odtwarzania w czasie rzeczywistym. miliardy zdarzeń (“użytkownik X zatrzymał film”, “buforowanie”, “błąd sieci”) trafiają do Kafki, a potem do Druida. Inżynierowie mogą w czasie rzeczywistym zapytać: “Pokaż mi mapę błędów sieciowych w regionie Polska z ostatnich 10 minut”.

📌 Źródła

👽 Brudnopis

  • Alternatywy: ClickHouse, Pinot.
  • Nie zastępuje Data Warehouse (brak złożonych JOINów, trudne usuwanie danych).
  • Zapisuje dane w segmentach (Time partitioning).