Apache Druid
Apache Druid
| |
---|---|
![]() | |
Basisdaten
| |
Entwickler | Apache Software Foundation |
Aktuelle Version | 33.0.0 (29. April 2025) |
Betriebssystem | Cross-platform |
Programmiersprache | Java |
Kategorie | Datenbankmanagementsystem |
Lizenz | Apache-Lizenz 2.0 |
druid.apache.org |
Druid ist ein freies spaltenorientiertes verteiltes Datenbankmanagementsystem der Apache Software Foundation. Druid wurde entwickelt, um schnell große Mengen an Ereignisdaten einfügen und Abfragen mit geringer Latenz darauf ausführen zu können.[1] Der Name Druid stammt von der gestaltwandelnden Druiden-Charakterklasse, die aus vielen Rollenspielen bekannt ist. Er soll aussagen, dass sich die Architecture des Systems verändern kann, um verschiedene Arten von Datenproblemen zu lösen.
Druid wird häufig in Business-Intelligence-OLAP-Anwendungen verwendet, um große Mengen an Echtzeitdaten und historischen Daten zu analysieren.[2] Druid wird produktiv von Technologieunternehmen wie Alibaba,[2] Airbnb,[2] Nielsen,[2] Cisco,[3][2] eBay,[4] Lyft,[5] Netflix,[6] PayPal,[2] Pinterest,[7] Reddit,[8] Twitter,[9] Walmart,[10] Wikimedia Foundation[11] und Yahoo[12] eingesetzt.
Geschichte
[Bearbeiten | Quelltext bearbeiten]Die Entwicklung von Druid begann 2011 von Eric Tschetter, Fangjin Yang, Gian Merlino und Vadim Ogievetsky[13] als Basis für die Analyseprodukte von Metamarkets. Im Oktober 2012 wurde der Quellcode des Projekt unter GPL-Lizenz veröffentlicht[14][15][16], im Februar 2015 wurde auf die Apache-Lizenz umgestellt.[17][18]
Architektur
[Bearbeiten | Quelltext bearbeiten]
In voller Ausbaustufe läuft Druid als Cluster spezialisierter Prozesse (sogenannten „nodes“) um eine hochverfügbare Architektur zu realisieren.[19] where data is stored redundantly, and there is no single point of failure.[20] Der Cluster beinhaltet externe Komponenten für die Koordination (Apache ZooKeeper), das Speichern von Metadaten (z. B. MySQL, PostgreSQL oder Derby) und die sogenannte „Deep Storage“ (z. B. HDFS oder Amazon S3) für permanente Daten-Backups.
Abfrage-Management
[Bearbeiten | Quelltext bearbeiten]Abfragen werden von den Broker-Knoten entgegengenommen, die sie an die zuständigen Daten-Knoten weiterleiten (entweder historisch oder Echtzeit). Weil Druid-Segmente partitioniert sind, kann eine Abfrage Daten von verschiedener Segmente und Partitionen (oder Shards) benötigen, die auf verschiedenen Knoten des Clusters gespeichert sind. Broker können lernen, welche Knoten die benötigten Daten enthalten, und sie können Teilergebnisse zusammenführen, bevor das aggregierte Ergebnis zurückgegeben wird.
Cluster-Management
[Bearbeiten | Quelltext bearbeiten]Operationen zum Daten-Management von historischen Knoten werden von Koordinator-Knoten überwacht. Apache ZooKeeper wird benutzt, um alle Knoten zu registrieren, einige Aspekte der Kommunikation zwischen den Knoten zu verwalten und Leader-Election durchzuführen.
Eigenschaften
[Bearbeiten | Quelltext bearbeiten]- (Streaming-)Datenaufnahme mit niedriger Latenz
- Beliebige Slice-and-Dice Datenexploration
- Analytische Abfragen im Sub-Sekunden-Bereich
- Angenäherte und exakte Berechnungen
Geschwindigkeit
[Bearbeiten | Quelltext bearbeiten]Im Jahr 2019 verglichen Forscher die Geschwindigkeit von Hive, Presto und Druid mit einem denormalisierten Sternschema-Benchmark, basierend auf dem TPC-H-Standard. Druid wurde sowohl mit der „Druid Best“-Konfiguration, die Tabellen mit Hashpartitionierung verwendet, als auch mit der „Druid Suboptimal“-Konfiguration getestet, die ohne Hashpartitionierung auskommt.[21]
Für die Tests wurden die 13 TPC-H-Abfragen mit TPC-H-Skalierungsfaktor 30 (einer 30-GB-Datenbank), Skalierungsfaktor 100 (einer 100-GB-Datenbank) und Skalierungsfaktor 300 (einer 300-GB-Datenbank) ausgeführt.
Skalierungsfaktor | Hive | Presto | Druid „Best“ | Druid „Suboptimal“ |
---|---|---|---|---|
30 | 256 s | 33 s | 2,09 s | 3,21 s |
100 | 424 s | 90 s | 6,12 s | 8,08 s |
300 | 982 s | 452 s | 7,60 s | 20,02 s |
Die gemessene Geschwindigkeit von Druid übertraf in jedem Szenario die von Hive um mindestens 98 % und die von Presto um mindestens 90 %, selbst wenn die „Suboptimal“-Konfiguration genutzt wurde.
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Hemsoth, Nicole. "Druid Summons Strength in Real-Time". Archiviert vom am 27. Februar 2013; abgerufen am 7. Februar 2014 (englisch). , Datanami, 8 November 2012
- ↑ a b c d e f druid: Druid | Powered by Druid. In: druid.apache.org. Abgerufen am 29. Juni 2016 (englisch).
- ↑ Brandon Butler: Under the hood of Cisco's Tetration Analytics platform. 20. Juni 2016, abgerufen am 23. Juni 2016 (englisch).
- ↑ Druid at Pulsar - ebay的专栏 - 博客频道 - CSDN.NET. In: blog.csdn.net. Abgerufen am 23. Juni 2016 (englisch).
- ↑ Streaming SQL and Druid by Arup Malakar auf YouTube, abgerufen am 29. Januar 2020 (englisch).
- ↑ The Netflix Tech Blog: Announcing Suro: Backbone of Netflix's Data Pipeline. In: techblog.netflix.com. Abgerufen am 23. Juni 2016 (englisch).
- ↑ Pinterest: Powering Ad Analytics with Apache Druid auf YouTube, abgerufen am 29. Januar 2020 (englisch).
- ↑ Scaling Reporting at Reddit - Upvoted. In: www.redditinc.com. 26. Februar 2021, abgerufen am 13. September 2022 (amerikanisches Englisch).
- ↑ Interactive Analytics at MoPub: Querying Terabytes of Data in Seconds. In: blog.twitter.com. Abgerufen am 29. Januar 2020 (amerikanisches Englisch).
- ↑ Amaresh Nayak: Event Stream Analytics at Walmart with Druid. In: Medium. 23. Februar 2018, abgerufen am 29. Januar 2020 (englisch).
- ↑ Conferences - O'Reilly Media. (englisch).
- ↑ Complementing Hadoop at Yahoo: Interactive Analytics with Druid. Abgerufen am 23. Juni 2016 (englisch).
- ↑ Druid: A Real-time Analytical Data Store. (englisch).
- ↑ Tschetter, Eric. "Introducing Druid". Archiviert vom am 8. Februar 2022; abgerufen am 12. Juni 2019 (englisch). , druid.apache.org, 24 October 2012
- ↑ Higginbotham, Stacey. "Metamarkets open sources Druid, its in-memory database". Archiviert vom am 18. September 2021; abgerufen am 7. Februar 2014 (englisch). , GigaOM, 24 October 2012
- ↑ Metamarkets Open Sources Druid, Streaming Real-Time Data Store. In: Yahoo News. 24. Oktober 2012, abgerufen am 24. Juli 2023 (amerikanisches Englisch).
- ↑ Derrick Harris: The Druid real-time database moves to an Apache license. 20. Februar 2015, archiviert vom am 22. August 2015; abgerufen am 4. August 2015 (englisch).
- ↑ Druid Gets Open Source-ier Under the Apache License. Abgerufen am 4. August 2015 (englisch).
- ↑ Druid Project Documentation. (englisch).
- ↑ Fangjin Yang, Eric Tschetter, Xavier Léauté, Nelson Ray, Gian Merlino, Deep Ganguli: "Druid: A Real-time Analytical Data Store". Metamarkets, abgerufen am 6. Februar 2014 (englisch).
- ↑ José Correia, Carlos Costa, Maribel Yasmina Santos: Business Information Systems. Hrsg.: Witold Abramowicz, Rafael Corchuelo (= Lecture Notes in Business Information Processing. Band 353). Springer International Publishing, Cham 2019, ISBN 978-3-03020485-3, Challenging SQL-on-Hadoop Performance with Apache Druid, S. 149–161, doi:10.1007/978-3-030-20485-3_12 (englisch, springer.com).