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.Hemsoth, Nicole. , Datanami, 8 November 2012 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. Druid wird produktiv von Technologieunternehmen wie Alibaba, Airbnb, Nielsen, Cisco, eBay, Lyft, Netflix, PayPal, Pinterest, Reddit, Twitter, Walmart, Wikimedia Foundation und Yahoo eingesetzt.
Geschichte Die Entwicklung von Druid begann 2011 von Eric Tschetter, Fangjin Yang, Gian Merlino und Vadim Ogievetsky als Basis für die Analyseprodukte von Metamarkets. Im Oktober 2012 wurde der Quellcode des Projekts unter GPL-Lizenz veröffentlichtTschetter, Eric. , druid.apache.org, 24 October 2012Higginbotham, Stacey. , GigaOM, 24 October 2012, im Februar 2015 wurde auf die Apache-Lizenz umgestellt.
Architektur alt=Architecture of a Druid cluster|rechts|520x520px In voller Ausbaustufe läuft Druid als Cluster spezialisierter Prozesse (sogenannten „nodes“) um eine hochverfügbare Architektur zu realisieren. where data is stored redundantly, and there is no single point of failure. 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 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 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 (Streaming-)Datenaufnahme mit niedriger Latenz Beliebige Slice-and-Dice Datenexploration Analytische Abfragen im Sub-Sekunden-Bereich Angenäherte und exakte Berechnungen
Geschwindigkeit 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.
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. +SkalierungsfaktorHivePrestoDruid „Best“Druid „Suboptimal“30256 s33 s2,09 s3,21 s100424 s90 s6,12 s8,08 s300982 s452 s7,60 s20,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
Weblinks Apache Druid Webseite
Druid Kategorie:Computercluster Kategorie:Freies Datenbankmanagementsystem Kategorie:NoSQL Kategorie:Datenbankmanagementsystem