Vorwort:
Was ist Apache-Druide?
Es handelt sich um eine analytische Datenplattform, die die Merkmale einer Zeitreihendatenbank, eines Data Warehouse und eines Volltextabrufsystems integriert.
Dieser Artikel vermittelt Ihnen einen kurzen Überblick über die Eigenschaften, Nutzungsszenarien, technischen Funktionen und die Architektur von Druiden. Dies wird uns bei der Auswahl einer Datenspeicherlösung helfen und ein tiefgreifendes Verständnis der Druidenspeicherung und der Zeitreihenspeicherung erlangen.
Übersicht
Eine moderne Cloud-native, Streaming-native, analytische Datenbank
Druid ist für schnelle Abfragen und schnelle Datenerfassungs-Workflows konzipiert. Die Stärke von Druid liegt in seiner leistungsstarken Benutzeroberfläche, den zur Laufzeit ausführbaren Abfragen und der leistungsstarken gleichzeitigen Verarbeitung. Druid kann als Open-Source-Alternative für Data Warehouses angesehen werden, die vielfältige Benutzerszenarien abdeckt.
Einfache Integration in bestehende Datenpipelines
Druid kann Daten von Nachrichtenbussen (wie Kafka, Amazon Kinesis) streamen oder Dateien stapelweise aus Data Lakes (wie HDFS, Amazon S3 und anderen ähnlichen Datenquellen) laden.
100x schnellere Leistung als herkömmliche Lösungen
Druids Benchmark-Leistungstests für Datenaufnahme und Datenabfrage übertreffen herkömmliche Lösungen deutlich.
Druids Architektur kombiniert die besten Funktionen von Data Warehouses, Zeitreihendatenbanken und Abrufsystemen.
Neue Workflows freischalten
Druid schaltet neue Abfragemethoden und Workflows für Clickstream, APM (Application Performance Management System), Supply Chain (Lieferkette), Netzwerktelemetrie, digitales Marketing und andere ereignisgesteuerte Szenarien frei. Druid ist für die schnelle Ad-hoc-Abfrage von Echtzeit- und historischen Daten konzipiert.
Bereitgestellt auf AWS/GCP/Azure, Hybrid Cloud, K8s und gemieteten Servern
Druid kann in jeder *NIX-Umgebung bereitgestellt werden. Egal, ob es sich um eine On-Premise-Umgebung oder eine Cloud-Umgebung handelt. Die Bereitstellung von Druid ist sehr einfach: Skalieren Sie nach oben oder unten, indem Sie Dienste hinzufügen oder entfernen.
Nutzungsszenarien
Apache Druid eignet sich für Szenarien mit hohen Anforderungen an Echtzeit-Datenextraktion, Hochleistungsabfrage und hohe Verfügbarkeit. Daher wird Druid häufig als Analysesystem mit einer umfangreichen GUI oder als Backend für eine API mit hoher Parallelität verwendet, die eine schnelle Aggregation erfordert. Druid eignet sich besser für ereignisorientierte Daten.
Häufige Nutzungsszenarien:
Click-Stream-Analyse (Web- und Mobilanalyse)
Risikokontrollanalyse
Netzwerktelemetrieanalyse (Netzwerkleistungsüberwachung)
Speicherung von Serverindikatoren
Lieferkettenanalyse (Fertigungsindikatoren)
Anwendungsleistung Indikatoren
Business Intelligence/Echtzeit-Online-Analysesystem OLAP
Diese Nutzungsszenarien werden im Folgenden im Detail analysiert:
Benutzeraktivitäten und -verhalten
Druid wird häufig in Click-Stream-, Besuchs-Stream- und Aktivitäts-Stream-Daten verwendet. Spezifische Szenarien umfassen: Messung des Benutzerengagements, Verfolgung von A/B-Testdaten für Produkteinführungen und Verständnis von Benutzernutzungsmustern. Druid kann Benutzerindikatoren, wie z. B. eindeutige Zählindikatoren, genau und annähernd berechnen. Dies bedeutet, dass Metriken wie die täglich aktiven Benutzer in Sekundenschnelle auf einen ungefähren Wert (mit einer durchschnittlichen Genauigkeit von 98 %) berechnet werden können, um Gesamttrends zu erkennen, oder dass sie präzise berechnet werden können, um sie Stakeholdern zu präsentieren. Mit Druid kann eine „Trichteranalyse“ durchgeführt werden, um zu messen, wie viele Benutzer eine bestimmte Aktion durchgeführt und keine andere Aktion ausgeführt haben. Dies ist nützlich für Produkte, die Benutzerregistrierungen verfolgen.
Netzwerkfluss
Druid wird häufig zum Sammeln und Analysieren von Netzwerkflussdaten verwendet. Druid wird verwendet, um Streaming-Daten segmentiert und mit beliebigen Attributen kombiniert zu verwalten. Druid ist in der Lage, große Mengen an Netzwerkflussdatensätzen zu extrahieren und Dutzende von Attributen zum Zeitpunkt der Abfrage schnell zu kombinieren und zu sortieren, was die Netzwerkflussanalyse erleichtert. Zu diesen Attributen gehören Kernattribute wie IP- und Portnummern sowie zusätzliche erweiterte Attribute wie Standort, Dienst, Anwendung, Gerät und ASN. Druid ist in der Lage, nicht feste Schemata zu verarbeiten, was bedeutet, dass Sie beliebige Attribute hinzufügen können.
Digitales Marketing
Druid wird häufig zum Speichern und Abfragen von Online-Werbedaten verwendet. Diese Daten stammen in der Regel von Werbedienstleistern und sind von entscheidender Bedeutung, um die Leistung von Werbekampagnen, die Klickpenetrationsrate, die Konversionsrate (Verbrauchsrate) und andere Indikatoren zu messen und zu verstehen.
Druid wurde ursprünglich als leistungsstarke benutzerorientierte Analyseanwendung für Werbedaten entwickelt. In Bezug auf die Speicherung von Werbedaten verfügt Druid bereits über umfangreiche Produktionspraxis, und eine große Anzahl von Benutzern auf der ganzen Welt hat Daten auf PB-Ebene auf Tausenden von Servern gespeichert.
Application Performance Management
Druid wird häufig verwendet, um von Anwendungen generierte Betriebsdaten zu verfolgen. Ähnlich wie bei Nutzungsszenarien für Benutzeraktivitäten können sich diese Daten darauf beziehen, wie Benutzer mit der Anwendung interagieren, und es kann sich um Indikatordaten handeln, die von der Anwendung selbst gemeldet werden. Mit Druid können Sie einen Drilldown durchführen, um die Leistung verschiedener Komponenten einer Anwendung zu ermitteln, Engpässe zu lokalisieren und Probleme zu identifizieren.
Im Gegensatz zu vielen herkömmlichen Lösungen zeichnet sich Druid durch eine geringere Speicherkapazität, eine geringere Komplexität und einen höheren Datendurchsatz aus. Es kann Anwendungsereignisse auf Tausenden von Eigenschaften schnell analysieren und komplexe Last-, Leistungs- und Nutzungsmetriken berechnen. Beispielsweise basiert ein API-Endpunkt auf einer Abfragelatenz von 95 %. Wir können Daten nach beliebigen temporären Attributen organisieren und segmentieren, z. B. Daten nach Tag segmentieren, z. B. Statistiken nach Benutzerporträts, z. B. Statistiken nach Standort des Rechenzentrums.
IoT- und Gerätemetriken
Driud kann als Zeitreihendatenbanklösung zum Speichern von Indikatordaten von Verarbeitungsservern und -geräten verwendet werden. Sammeln Sie von Maschinen generierte Echtzeitdaten und führen Sie schnelle Ad-hoc-Analysen durch, um die Leistung zu messen, Hardwareressourcen zu optimieren und Probleme zu lokalisieren.
Im Gegensatz zu vielen herkömmlichen Zeitreihendatenbanken ist Druid im Wesentlichen eine Analyse-Engine. Druid kombiniert die Konzepte einer Zeitreihendatenbank, einer Spaltenanalysedatenbank und eines Abrufsystems. Es unterstützt zeitbasierte Partitionierung, Spaltenspeicherung und Suchindizierung in einem einzigen System. Dies bedeutet, dass zeitbasierte Abfragen, numerische Aggregationen und Abruffilterabfragen extrem schnell sind.
Sie können Millionen einzigartiger Dimensionswerte in Ihre Metriken einbeziehen und Gruppen und Filter nach jeder Dimension frei kombinieren (Dimensionen in Druid ähneln Tags in Zeitreihendatenbanken). Sie können eine große Anzahl komplexer Metriken basierend auf Tag-Gruppen und Rängen berechnen. Und Ihre Suche und Filterung nach Tags erfolgt schneller als bei herkömmlichen Zeitreihendatenbanken.
OLAP und Business Intelligence
Druid wird häufig in Business-Intelligence-Szenarien verwendet. Das Unternehmen setzt Druid ein, um Abfragen zu beschleunigen und Anwendungen zu verbessern. Im Gegensatz zu Hadoop-basierten SQL-Engines (wie Presto oder Hive) ist Druid für hohe Parallelität und Abfragen in Sekundenbruchteilen konzipiert und verbessert interaktive Datenabfragen über die Benutzeroberfläche. Dadurch eignet sich Druid besser für die Analyse echter visueller Interaktionen.
Technologie
Apache Druid ist eine verteilte Open-Source-Datenspeicher-Engine. Das Kerndesign von Druid umfasst Konzepte aus OLAP-/Analysedatenbanken, Zeitreihendatenbanken und Suchsystemen, um ein einheitliches System zu schaffen, das für eine Vielzahl von Anwendungsfällen geeignet ist. Druid integriert die Hauptfunktionen dieser drei Systeme in die Aufnahmeschicht (Datenaufnahmeschicht), das Speicherformat (Speicherformatierungsschicht), die Abfrageschicht (Abfrageschicht) und die Kernarchitektur (Kernarchitektur) von Druid.
Zu den Hauptfunktionen von Druid gehören:
Spaltenspeicher
Druid speichert und komprimiert jede Datenspalte einzeln. Und bei der Abfrage werden nur die spezifischen Daten abgefragt, die abgefragt werden müssen, und schnelles Scannen, Ranking und GroupBy werden unterstützt.
Nativer Suchindex
Druid erstellt einen invertierten Index für Zeichenfolgenwerte, um eine schnelle Suche und Filterung von Daten zu erreichen.
Streaming und Batch-Datenaufnahme
Out-of-the-box Apache Kafka, HDFS, AWS S3-Anschlüsse, Streaming-Prozessoren.
Flexibles Datenschema
Druid passt sich elegant an sich ändernde Datenschemata und verschachtelte Datentypen an.
Zeitbasierte optimierte Partitionierung
Druid partitioniert Daten intelligent nach Zeit. Daher sind zeitbasierte Druid-Abfragen deutlich schneller als herkömmliche Datenbanken.
Unterstützt SQL-Anweisungen
Zusätzlich zu nativen JSON-basierten Abfragen unterstützt Druid auch SQL basierend auf HTTP und JDBC.
Horizontale Skalierbarkeit
Datenaufnahmerate von einer Million/Sekunde, massiver Datenspeicher und Abfragen in weniger als einer Sekunde.
Einfach zu bedienen und zu warten
Die Kapazität kann durch Hinzufügen oder Entfernen von Servern erweitert und reduziert werden. Druid unterstützt automatisches Rebalancing und Failover.
Datenaufnahme
Druid unterstützt sowohl Streaming als auch Batch-Datenaufnahme. Druid stellt normalerweise über einen Nachrichtenbus wie Kafka (Laden von Streaming-Daten) oder über ein verteiltes Dateisystem wie HDFS (Laden von Batch-Daten) eine Verbindung zu Rohdatenquellen her.
Druid speichert Originaldaten in Datenknoten in Form von Segmenten durch Indexierungsverarbeitung. Segmente sind eine abfrageoptimierte Datenstruktur.
Datenspeicherung
Wie die meisten analytischen Datenbanken verwendet Druid eine spaltenbasierte Speicherung. Abhängig vom Datentyp der verschiedenen Spalten (Zeichenfolge, Zahl usw.) verwendet Druid unterschiedliche Komprimierungs- und Kodierungsmethoden. Druid erstellt auch verschiedene Arten von Indizes für verschiedene Spaltentypen.
Ähnlich wie ein Retrieval-System erstellt Druid einen invertierten Index für String-Spalten, um eine schnellere Suche und Filterung zu erreichen. Ähnlich einer Zeitreihendatenbank partitioniert Druid Daten intelligent nach Zeit, um schnellere zeitbasierte Abfragen zu ermöglichen.
Im Gegensatz zu den meisten herkömmlichen Systemen kann Druid Daten vor der Datenaufnahme vorab aggregieren. Dieser Vorgang vor der Aggregation wird als Rollup bezeichnet, wodurch Speicherkosten erheblich eingespart werden können.
Query
Druid unterstützt sowohl JSON-over-HTTP- als auch SQL-Abfragemethoden. Zusätzlich zu den Standard-SQL-Operationen unterstützt Druid auch eine große Anzahl einzigartiger Operationen. Mit der von Druid bereitgestellten Algorithmensuite können schnell Zähl-, Rangfolge- und Quantilberechnungen durchgeführt werden.
Architektur
Druid ist eine Microservice-Architektur, die als in mehrere Services zerlegte Datenbank verstanden werden kann. Jeder der Kerndienste von Druid (Aufnahme, Abfrage und Koordination) kann einzeln oder gemeinsam auf Standardhardware bereitgestellt werden.
Druid benennt jeden Dienst eindeutig, um sicherzustellen, dass das Betriebs- und Wartungspersonal die Parameter des entsprechenden Dienstes entsprechend den Nutzungs- und Lastbedingungen anpassen kann. Wenn es beispielsweise die Auslastung erfordert, kann das Betriebspersonal mehr Ressourcen für den Datenaufnahmedienst bereitstellen und die Ressourcen für den Datenabfragedienst reduzieren.
Druid kann unabhängig ausfallen, ohne den Betrieb anderer Dienste zu beeinträchtigen.
Betrieb und Wartung
Drui ist als robustes System konzipiert, das 7*24 Stunden laufen muss. Druid verfügt über die folgenden Funktionen, um einen langfristigen Betrieb zu gewährleisten und sicherzustellen, dass kein Datenverlust auftritt.
Datenkopien
Druid erstellt mehrere Datenkopien basierend auf der konfigurierten Anzahl von Kopien, sodass ein einzelner Maschinenausfall keine Auswirkungen auf Druid-Abfragen hat.
Unabhängige Dienste
Druid benennt jeden Hauptdienst klar und jeder Dienst kann je nach Nutzung entsprechend angepasst werden. Dienste können unabhängig voneinander ausfallen, ohne den normalen Betrieb anderer Dienste zu beeinträchtigen. Wenn beispielsweise der Datenaufnahmedienst ausfällt, werden keine neuen Daten in das System geladen, bestehende Daten können jedoch weiterhin abgefragt werden.
Automatische Datensicherung
Druid sichert automatisch alle indizierten Daten in einem Dateisystem, bei dem es sich um ein verteiltes Dateisystem wie HDFS handeln kann. Sie können alle Ihre Druid-Cluster-Daten verlieren und schnell von den Sicherungsdaten neu laden.
Rollendes Update
Mit dem rollierenden Update können Sie den Druid-Cluster ohne Ausfallzeiten aktualisieren, sodass er für Benutzer unsichtbar ist. Alle Druid-Versionen sind abwärtskompatibel.
Wenn Sie mehr über Zeitreihendatenbanken und Vergleiche erfahren möchten, können Sie zu einem anderen Artikel wechseln:
Erste Einführung und Auswahl der Zeitreihendatenbank (TSDB)
Verwandte Empfehlungen: Apache-Server
Das obige ist der detaillierte Inhalt vonAusführliche Erklärung des Apache-Druiden in einem Artikel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!