Udostępnij za pomocą


Przyspieszanie zapytań usługi Azure Data Lake Storage

Przyspieszanie zapytań umożliwia aplikacjom i strukturom analitycznym znaczne zoptymalizowanie przetwarzania danych przez pobranie tylko danych, których potrzebują do wykonania danej operacji. Skraca to czas i moc obliczeniową wymaganą do uzyskania krytycznych informacji na temat przechowywanych danych.

Przegląd

Przyspieszanie zapytań akceptuje predykaty filtrowania i projekcje kolumn, co umożliwia aplikacjom filtrowanie wierszy i kolumn w czasie odczytywania danych z dysku. Tylko dane spełniające warunki predykatu są przesyłane przez sieć do aplikacji. Zmniejsza to opóźnienie sieci i koszt obliczeń.

Za pomocą języka SQL można określić predykaty filtru wierszy i projekcje kolumn w żądaniu przyspieszania zapytań. Żądanie przetwarza tylko jeden plik. W związku z tym zaawansowane funkcje relacyjne języka SQL, takie jak sprzężenia i grupowanie według agregacji, nie są obsługiwane. Przyspieszanie zapytań obsługuje dane w formacie CSV i JSON jako dane wejściowe dla każdego żądania.

Funkcja przyspieszania zapytań nie jest ograniczona tylko do kont magazynu Data Lake Storage (konta magazynu, które mają włączoną hierarchiczną przestrzeń nazw). Przyspieszanie zapytań jest zgodne z obiektami blob na kontach magazynu, które nie mają włączonej hierarchicznej przestrzeni nazw. Oznacza to, że można osiągnąć tę samą redukcję opóźnienia sieciowego i kosztów obliczeń, przetwarzając dane, które zostały już zapisane jako bloby w kontach przechowywania.

Aby zapoznać się z przykładem używania przyspieszania zapytań w aplikacji klienckiej, zobacz Filtrowanie danych przy użyciu przyspieszania zapytań usługi Azure Data Lake Storage.

Przepływ danych

Na poniższym diagramie pokazano, jak typowa aplikacja używa przyspieszania zapytań do przetwarzania danych.

Omówienie przyspieszania zapytań

  1. Aplikacja kliencka żąda danych pliku, określając predykaty i projekcje kolumn.

  2. Przyspieszanie zapytań analizuje określone zapytanie SQL i dystrybuuje pracę w celu analizowania i filtrowania danych.

  3. Procesory odczytują dane z dysku, analizuje dane przy użyciu odpowiedniego formatu, a następnie filtrują dane, stosując określone predykaty i projekcje kolumn.

  4. Optymalizacja zapytań łączy fragmenty odpowiedzi, aby przesyłać z powrotem do aplikacji klienckiej.

  5. Aplikacja kliencka odbiera i analizuje przesyłaną strumieniowo odpowiedź. Aplikacja nie musi filtrować żadnych innych danych i może bezpośrednio zastosować żądane obliczenia lub przekształcenie.

Lepsza wydajność przy niższych kosztach

Przyspieszanie zapytań optymalizuje wydajność, zmniejszając ilość danych przesyłanych i przetwarzanych przez aplikację.

Aby obliczyć zagregowaną wartość, aplikacje często pobierają wszystkie dane z pliku, a następnie przetwarzają i filtrują dane lokalnie. Analiza wzorców danych wejściowych/wyjściowych dla obciążeń analitycznych pokazuje, że aplikacje zwykle wymagają tylko 20% danych odczytywanych w celu wykonania dowolnego obliczenia. Ta statystyka jest prawdziwa nawet po zastosowaniu technik, takich jak oczyszczanie partycji. Oznacza to, że 80% tych danych jest niepotrzebnie przesyłane przez sieć, analizowane i filtrowane przez aplikacje. Ten wzorzec, zaprojektowany do usuwania niepotrzebnych danych, wiąże się ze znaczącym kosztem obliczeniowym.

Mimo że platforma Azure oferuje wiodącą w branży sieć, zarówno pod względem przepływności, jak i opóźnienia, niepotrzebnie transfer danych przez sieć jest nadal kosztowna dla wydajności aplikacji. Filtrując niepożądane dane podczas żądania przechowywania, przyspieszanie zapytań eliminuje ten koszt.

Ponadto obciążenie procesora CPU wymagane do analizowania i filtrowania niepotrzebnych danych wymaga, aby aplikacja aprowizować większą liczbę i większe maszyny wirtualne w celu wykonania swojej pracy. Przenosząc to obciążenie obliczeniowe do przyspieszania zapytań, aplikacje mogą uzyskać znaczne oszczędności kosztów.

Aplikacje, które mogą korzystać z przyspieszenia zapytań

Przyspieszanie zapytań jest przeznaczone dla rozproszonych struktur analitycznych i aplikacji do przetwarzania danych.

Rozproszone struktury analityczne, takie jak Apache Spark i Apache Hive, obejmują warstwę abstrakcji magazynu w ramach struktury. Te silniki również zawierają optymalizatory zapytań, które mogą uwzględniać wiedzę na temat możliwości podstawowej usługi we/wy w celu określenia optymalnego planu dla zapytań użytkowników. Te struktury zaczynają integrować przyspieszanie zapytań. W związku z tym użytkownicy tych struktur widzą lepsze opóźnienie zapytań i niższy całkowity koszt posiadania bez konieczności wprowadzania żadnych zmian w zapytaniach.

Przyspieszanie zapytań jest również przeznaczone dla aplikacji do przetwarzania danych. Te typy aplikacji zwykle wykonują przekształcenia danych na dużą skalę, które mogą nie prowadzić bezpośrednio do analizy szczegółowych informacji, dzięki czemu nie zawsze używają ustalonych rozproszonych struktur analitycznych. Te aplikacje często mają bardziej bezpośrednią relację z podstawową usługą magazynu, dzięki czemu mogą korzystać bezpośrednio z funkcji, takich jak przyspieszanie zapytań.

Aby zapoznać się z przykładem sposobu integrowania przyspieszania zapytań przez aplikację, zobacz Filtrowanie danych przy użyciu przyspieszania zapytań usługi Azure Data Lake Storage.

Ceny

Ze względu na zwiększone obciążenie obliczeniowe w usłudze Azure Data Lake Storage model cenowy korzystania z przyspieszania zapytań różni się od normalnego modelu transakcji usługi Azure Data Lake Storage. Przyspieszanie zapytań nalicza opłatę za objętość zeskanowanych danych, a także opłatę za objętość danych zwróconych do osoby wywołującej. Aby uzyskać więcej informacji, zobacz Cennik usługi Azure Data Lake Storage.

Mimo zmiany modelu rozliczeniowego, model cenowy przyspieszania zapytań został zaprojektowany tak, aby obniżyć całkowity koszt korzystania z zasobów, uwzględniając zmniejszenie kosztów znacznie droższych maszyn wirtualnych.

Dalsze kroki