Apache Druid
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. GeschichteDie 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 Projekts unter GPL-Lizenz veröffentlicht[14][15][16], im Februar 2015 wurde auf die Apache-Lizenz umgestellt.[17][18] Architektur![]() 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-ManagementAbfragen 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-ManagementOperationen 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
GeschwindigkeitIm 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.
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
Weblinks |