Schnelles Einlesen von Daten

Was ist Fast Data Ingestion?

Das Sammeln, Speichern und Bearbeiten von großen Mengen unterschiedlicher Hochgeschwindigkeitsdaten ist eine komplexe Herausforderungen. Das gilt besonders in Bereichen wie Internet of Things (IoT), e-Commerce, Sicherheit, Kommunikationen, Unterhaltung, Finanzwesen und Einzelhandel. In diesen Bereichen ist reaktionsschnelle, zeitgerechte und genaue Entscheidungsfindung von zentraler Bedeutung. Die Sammlung und Analyse von Daten in Echtzeit ist für diese Unternehmen überlebenswichtig.

Für die Echtzeit-Datenanalyse ist es wichtig, dass genug Ressourcen verfügbar sind, um schnelle Datenstreams effektiv zu erfassen. Die physische Infrastruktur (Hochgeschwindigkeits-Netzwerke, Rechenleistung, Speicher und Arbeitsspeicher) spielt dafür eine wichtige Rolle. Es muss jedoch auch darauf geachtet werden, dass die angewandte Software den Leistung der physischen Infrastruktur entspricht. Andernfalls droht den Firmen Datenstau, oder fehlende beziehungsweise unvollständige Daten.

Herausforderungen und bewährte Praktiken des Fast Data Ingest

Eine Hochgeschwindigkeits-Datenaufnahme bringt häufig verschiedene Arten von Komplexitäten mit sich:

  1. Große Datenvolumen, die schubweise ankommen: Eine gute Lösung muss auch große Datenvolumen, die schubweise ankommen, mit minimaler Latenzzeit bearbeiten können. Sie sollte Millionen von Schreibvorgängen pro Sekunden mit einer Sub-Millisekunden-Latenzzeit mithilfe minimaler Ressourcen realisieren können.
  2. Daten aus mehreren Quellen/Formaten: Lösungen für die Datenaufnahme müssen flexibel genug sein, Daten in verschiedenen Formaten zu handhaben. Dabei sollten sie die Identität der Quelle wenn nötig behalten und in Echtzeit umwandeln oder normalisieren.
  3. Daten, die gefiltert, analysiert oder weitergeleitet werden müssen: Die meisten Lösungen für Datenaufnahme haben einen oder mehrere Empfänger, die Daten verarbeiten. Dabei handelt es sich oft um verschiedene Anwendungen, die an denselben oder an anderen Standorten mit unterschiedlichen Annahmen fungieren. In solchen Fällen muss die Datenbank nicht nur die Daten umwandeln, sondern auch je nach den Anforderungen der konsumierenden Anwendungen die Daten filtern oder zusammenfassen.
  4. Einen stetigen Datenkanal zwischen Datenquellen und verschiedenen Arten von Datensenkenn verwalten: Wenn Daten in keinem kontinuierlichen Rhythmus ankommen, benötigen Datenquellen und Datensenken einen Kanal, über den die Daten asynchron übertragen werden können. Der Kanal muss auch gegen Verbindungsverlust und Hardwarefehler gewappnet sein. Es kommt oft vor, dass Produzent und Konsument nicht in der gleichen Geschwindigkeit operieren. Das kann zu Datenrückständen führen, durch die Konsumenten erst verspätet mit den Daten arbeiten können.
  5. Daten aus geografisch verteilten Quellen: Hier ist es für die grundlegende Architektur häufig sinnvoll, Datenerfassungsknoten nahe der Quelle zu verteilen. Auf diese Weise werden die Knoten selbst Teil der Lösung zur schnellen Datenaufnahme, um Daten zu sammeln, zu bearbeiten, zu übertragen oder umzuleiten.

Schnelle Datenaufnahme – Ein Kinderspiel für Redis Enterprise

Hohe Leistung mit der kleinsten Anzahl an Servern
Redis Enterprise kann mehr als 200 Millionen Lese-/Schreibvorgänge pro Sekunde handhaben, mit Latenzzeiten von Sub-Millisekunden mit nur einem 40-Knoten-Cluster auf AWS . Das macht Redis Enterprise zur Ressourcen-effizientesten NoSQL-Datenbank auf dem Markt.

Flexible Datenstrukturen und Module für Echtzeitanalysen: Redis Streams, Pub/Sub, Listen, Sorted Sets, RedisTimeSeries
Redis bietet eine Vielfalt von Datenstrukturen wie Streams, Listen, Mengen, Sorted Sets und Hashes, die eine einfache und vielseitige Datenbearbeitung ermöglichen. So wird Hochleistungs-Datenaufnahme mit Echtzeitanalysen effizient kombiniert.

Redis’ Pub/Sub-Fähigkeiten ermöglichen eine Handlung als effizienter Message-Broker zwischen geografisch verteilten Datenaufnahmeknoten. Daten-produzierende Anwendungen speichern Streaming-Daten in Kanälen in dem/den geforderten Format(en). Konsumierende Anwendungen abonnieren diese Kanäle, die für sie relevant sind. Sie empfangen Nachrichten asynchron, im Rhythmus in dem sie gespeichert werden.

Listen und Sorted Sets können als Datenkanäle eingesetzt werden, die Produzenten und Konsumenten miteinander verbinden. Sie können diese Datenstrukturen auch nutzen, um Daten asynchron zu übermitteln. Im Gegensatz zu Pub/Sub bieten Listen und Sorted Sets Persistenz.

Streams können sogar noch mehr: Sie bieten einen persistenten Datenaufnahmekanal zwischen sProduzenten und Konsumenten. Mit Streams können Sie die Anzahl der Konsumenten, die Konsumentenrgruppen nutzen, anpassen. Konsumentengruppen implementieren zudem transaktionsähnliche Datensicherheit, wenn Konsumenten beim Konsumieren und Bearbeiten von Daten scheitern.

Außerdem bietet RedisTimeSeries verbesserte Funktionen für eine schnelle Datenaufnahme, wie Downsampling, spezielle Zählvorgänge zum letzten gespeicherten Wert und eine doppelte Delta-Kompression in Kombination mit Echtzeit-Analysefähigkeiten wie für Datenkennzeichnung mit integrierter Suche, Aggregation, Bereichsanfragen und einen integrierten Konnektor mit Best-of-Class Überwachungs- und Analyse-Tools wie Grafana und Prometheus.

Active-Active Geo-Verteilung
Redis Enterprises CRDTs-basierte Active-Active-Technologie ermöglicht eine komplexe Datenaufnahme und Nachrichtenübermittlungsvorgänge an geografisch verteilten -Standorten. Die Anwendung kann komplett verteilt eingesetzt werden, um die Verfügbarkeit und Reaktionszeit der Anwendung zu verbessern.

Redis DRAM mit SSD und persistentem Speicher erweitern
Redis Enterprises Redis on Flash -Technologie ermöglicht die Erweiterung von DRAM mit SSD und persistentem Speicher. Dadurch ist wiederum die Speicherung sehr großer Datenmengen von mehreren Terabytes mit denselben Infrastrukturkosten einer Festplatten-basierten Datenbank möglich. Gleichzeitig werden Latenzzeiten im Sub-Millisekunden-Bereich gehalten, selbst bei der Aufnahme von mehr als 1 Million Elementen/Sek auf jedem Knoten des Redis Enterprise Clusters.

Implementierung von schneller Datenaufnahme mit Redis

Hier sind ein paar in Java geschriebene Code-Snippets. Sie alle nutzen die Jedis-Bibliothek. Folgen Sie zuerst den Anweisungen auf Jedis’ Erste-Schritte-Seite zum Downloaden der neuesten Version von Jedis.

1. Schnelle Datenaufnahme mit Redis Streams
A. Schicken Sie eine Nachricht auf einer Stream-Datenstruktur. Dieses Programm nutzt XADD, um neue Elemente zum Stream hinzuzufügen. Dateiname: StreamPublish.java.

B. Verarbeiten Sie Daten aus einem Stream asynchron. Warten Sie auf die Nachricht, wenn der Stream leer ist. Dieses Programm verwendet den XREAD-Befehl. Dateiname: StreamConsumeAsync.java.

C. Fragen Sie einen Stream mit XRANGE-Befehl ab. Dateiname: StreamQuery.java

2. Schnelle Datenaufnahme mit Pub/Sub

A. Speichern Sie in einem Kanal. Dateiname: PubSubPublish.java

B. Abonnieren Sie einen Kanal. Dateiname: PubSubPublish.java

3. Schnelle Datenaufnahme mit Listen

A. Daten-Push in eine Liste. Dateiname: ListPush.java

B. Daten-Pop aus einer Liste. Dateiname: ListPop.java

Nächste Schritte