Azure Data Lake Storage-Abfragebeschleunigung

Durch den Einsatz von Abfragebeschleunigung können Anwendungen und Analyse-Frameworks die Datenverarbeitung optimieren. Sie holen nur die Daten ab, die sie für eine bestimmte Operation benötigen. Dieser Ansatz reduziert die Zeit und Verarbeitungsleistung, die benötigt wird, um Einblicke in gespeicherte Daten zu gewinnen.

Überblick

Abfragebeschleunigung akzeptiert Filterprädikate und Spaltenprojektionen. Durch die Verwendung dieser Prädikate und Projektionen können Anwendungen Zeilen und Spalten filtern, wenn sie Daten von der Festplatte lesen. Nur die Daten, die die Bedingungen eines Prädikats erfüllen, werden über das Netzwerk an die Anwendung übertragen. Dieser Ansatz reduziert die Netzwerklatenz und die Rechenkosten.

Verwenden Sie SQL, um die Zeilenfilterprädikate und Spaltenprojektionen in einer Abfragebeschleunigungsanfrage anzugeben. Beachten Sie die folgenden Einschränkungen:

  • Eine Anforderung verarbeitet nur eine Datei.
  • Abfragebeschleunigung unterstützt keine fortschrittlichen relationalen Funktionen von SQL, wie Joins und Gruppieren nach Aggregaten.
  • Die Abfragebeschleunigung unterstützt CSV- und JSON-formatierte Daten als Eingabe für jede Anforderung.

Die Abfragebeschleunigungsfunktion ist nicht auf Data Lake Storage beschränkt (Speicherkonten, für die der hierarchische Namespace aktiviert ist). Die Abfragebeschleunigung ist mit den Blobs in Speicherkonten kompatibel, für die kein hierarchischer Namespace aktiviert ist. Diese Kompatibilität bedeutet, dass Sie dieselbe Reduzierung der Netzwerklatenz und der Rechenkosten erzielen können, wenn Sie Daten verarbeiten, die Sie bereits als Blobs in Speicherkonten gespeichert haben.

Ein Beispiel für die Verwendung der Abfragebeschleunigung in einer Clientanwendung finden Sie unter "Filtern von Daten mithilfe der Azure Data Lake Storage-Abfragebeschleunigung".

Datenfluss

Das folgende Diagramm veranschaulicht, wie eine typische Anwendung Abfragebeschleunigung zum Verarbeiten von Daten verwendet.

Diagramm, das zeigt, wie eine Anwendung Abfragebeschleunigung nutzt, um Daten zu filtern und zu verarbeiten.

  1. Die Clientanwendung fordert Dateidaten an, indem Prädikate und Spaltenprojektionen angegeben werden.

  2. Die Abfragebeschleunigung analysiert die angegebene SQL-Abfrage und verteilt Arbeit zum Analysieren und Filtern von Daten.

  3. Prozessoren lesen die Daten von der Festplatte, analysieren die Daten mit dem entsprechenden Format und filtern dann die Daten, indem sie die angegebenen Prädikate und Spaltenprojektionen anwenden.

  4. Die Abfragebeschleunigung führt die Antwort-Shards zusammen, um sie an die Client-Anwendung zurückzustreamen.

  5. Die Clientanwendung empfängt und analysiert die gestreamte Antwort. Die Anwendung muss keine anderen Daten filtern und kann die gewünschte Berechnung oder Transformation direkt anwenden.

Bessere Leistung bei geringeren Kosten

Abfragebeschleunigung optimiert die Leistung, indem sie die Datenmenge reduziert, die Ihre Anwendung überträgt und verarbeitet.

Um einen aggregierten Wert zu berechnen, rufen Anwendungen häufig alle Daten aus einer Datei ab, verarbeiten und filtern sie dann lokal. Eine Analyse der Ein- und Ausgabemuster (I/O) für Analyse-Workloads zeigt, dass Anwendungen typischerweise nur 20% der Daten benötigen, die sie lesen, um eine Berechnung durchzuführen. Diese Statistik gilt auch nach der Anwendung von Techniken wie Partitionsschneiden. Dieses Ergebnis bedeutet, dass Anwendungen unnötig 80% der Daten übertragen, parsen und filtern. Dieses Muster, das zum Entfernen nicht benötigter Daten konzipiert ist, verursacht erhebliche Berechnungskosten.

Obwohl Azure ein Hochleistungsnetzwerk bietet, ist es sowohl hinsichtlich Durchsatz als auch Latenz immer noch kostspielig, Daten unnötig über dieses Netzwerk zu übertragen. Durch das Filtern der unerwünschten Daten während der Speicheranforderung beseitigt die Abfragebeschleunigung diese Kosten.

Zusätzlich erfordert die CPU-Belastung, die zum Parsen und Filtern unbenötigter Daten erforderlich ist, dass Ihre Anwendung mehr und größere VMs bereitstellt, um ihre Arbeit zu erledigen. Durch das Übertragen dieser Rechenlast auf die Abfragebeschleunigung können Anwendungen erhebliche Kosteneinsparungen erzielen.

Anwendungen, die von der Abfragebeschleunigung profitieren können

Abfragebeschleunigung ist für verteilte Analyse-Frameworks und Datenverarbeitungsanwendungen konzipiert:

  • Verteilte Analyse-Frameworks wie Apache Spark und Apache Hive integrieren eine Speicherabstraktionsschicht innerhalb des Frameworks. Diese Engines umfassen auch Abfrageoptimierer, die Kenntnisse über die Funktionen des zugrunde liegenden E/A-Diensts enthalten können, wenn sie einen optimalen Abfrageplan für Benutzerabfragen bestimmen. Diese Frameworks integrieren Abfragebeschleunigung. Infolgedessen profitieren Benutzende dieser Frameworks von einer verbesserten Abfragelatenz und geringeren Gesamtkosten, ohne Änderungen an den Abfragen vornehmen zu müssen.

  • Datenverarbeitungsanwendungen führen in der Regel groß angelegte Datentransformationen durch, die möglicherweise nicht direkt zu analytischen Einsichten führen, daher verwenden sie nicht immer etablierte verteilte Analyse-Frameworks. Diese Anwendungen haben oft eine direktere Beziehung zum zugrunde liegenden Speicherdienst, sodass sie direkt von Funktionen wie Abfragebeschleunigung profitieren können.

Ein Beispiel dafür, wie eine Anwendung die Abfragebeschleunigung integrieren kann, finden Sie unter Filtern von Daten mithilfe der Azure Data Lake Storage-Abfragebeschleunigung.

Preisgestaltung

Aufgrund der erhöhten Rechenbelastung im Azure Data Lake Storage-Dienst unterscheidet sich das Preismodell für Abfragebeschleunigung vom normalen Azure Data Lake Storage-Transaktionsmodell. Die Abfragebeschleunigung berechnet Kosten für die Menge der gescannten Daten sowie Kosten für die Menge der an den Abfragenden zurückgegebenen Daten. Weitere Informationen finden Sie unter Azure Data Lake Storage-Preise.

Trotz der Änderung des Abrechnungsmodells ist das Preismodell für die Abfragebeschleunigung so konzipiert, dass es die Gesamtbetriebskosten für einen Workload senkt, da die wesentlich höheren VM-Kosten reduziert werden.

Nächste Schritte