Ускорение запросов Azure Data Lake Storage
Ускорение запросов позволяет приложениям и платформам аналитики существенно оптимизировать обработку данных, получая только те данные, которые необходимы для выполнения указанной операции. Благодаря этому для получения аналитических сведения о хранимых данных потребуется меньше времени и меньшая вычислительная мощность.
Обзор
Ускорение запросов принимает предикаты фильтрации и проекции столбцов, которые позволяют приложениям фильтровать строки и столбцы во время чтения данных с диска. Только данные, соответствующие условиям предиката, передаются в приложение по сети. Это сокращает задержку в сети и затраты на вычисления.
Вы можете задавать предикаты фильтра строк и проекции столбцов в запросе ускорения запросов с помощью SQL. Запрос обеспечивает обработку только одного файла. Поэтому расширенные реляционные функции SQL, например объединения и группирование по статистическим выражениям, не поддерживаются. Для ускорения запросов в качестве входных данных этих запросов поддерживаются только данные в формате CSV и JSON.
Применение возможности ускорения запросов не ограничивается только Data Lake Storage (учетными записями хранения, для которых включено иерархическое пространство имен). Ускорение запросов совместимо с большими двоичными объектами в учетных записях хранения, в которых не включено иерархическое пространство имен. Это означает, что при обработке данных, которые уже сохранены в учетных записях хранения в виде BLOB-объектов, можно добиться того же сокращения задержки сети и затрат на вычисление.
Пример использования ускорения запросов в клиентском приложении см. в статье Фильтрация данных с помощью ускорения запросов Azure Data Lake Storage.
Поток данных
На следующей схеме показано, как типичное приложение использует ускорение запросов для обработки данных.
Клиентское приложение запрашивает данные файла, указывая предикаты и проекции столбцов.
Функция ускорения запросов анализирует указанный SQL-запрос и распределяет работу для синтаксического анализа и фильтрации данных.
Процессоры считывают данные с диска, анализируют данные с использованием соответствующего формата, а затем отфильтровывают данные, применяя указанные предикаты и проекции столбцов.
Функция ускорения запросов объединяет сегменты ответа для потоковой передачи обратно в клиентское приложение.
Клиентское приложение получает и анализирует переданный потоком ответ. Приложению не нужно фильтровать другие данные и может применять нужные вычисления или преобразования напрямую.
Повышение производительности и снижение затрат
Функция ускорения запросов оптимизирует производительность, уменьшая объем данных, которые передаются и обрабатываются приложением.
Чтобы вычислить агрегированное значение, приложения часто извлекают все данные из файла, а затем обрабатывают и фильтруют их локально. Анализ шаблонов входных и выходных данных для аналитических рабочих нагрузок показывает, что приложениям обычно требуется только 20 % считываемых ими данных для выполнения любых вычислений. Эта статистика сохраняется даже после применения таких методов, как удаление секций. Это означает, что 80 % этих данных даром передаются по сети, анализируется и фильтруется приложениями. Этот шаблон, предназначенный для удаления ненужных данных, требует значительных затрат на вычислительные ресурсы.
Несмотря на то, что в Azure применяется лучшая в отрасли сеть с точки зрения пропускной способности и задержки, ненужное перемещение данных по этой сети все же значительно влияет на производительность приложений. Отфильтровывая ненужные данные при выполнении запроса на хранение, функция ускорения запросов устраняет эти последствия.
Кроме того, из-за загрузки ЦП вследствие анализа и фильтрации ненужных данных для работы приложения приходится подготавливать большее число более мощных виртуальных машин. Переложив эту связанную с вычислениями нагрузку на функцию ускорения запросов, можно значительно сократить затраты на приложения.
Приложения, которые могут получить преимущество от ускорения запросов
Ускорение запросов предназначено для распределенных платформ аналитики и приложений для обработки данных.
Такие платформы распределенной аналитики, как Apache Spark и Apache Hive, включают в себя уровень абстракции хранилища в пределах платформы. Эти подсистемы также включают в себя оптимизаторы запросов, которые могут учитывать знания о возможностях базовой службы ввода-вывода при определении оптимального плана запроса для пользовательских запросов. В эти платформы уже начинают интегрировать ускорение запросов. В результате пользователи этих платформ видят повышенную задержку запросов и более низкую совокупную стоимость владения без внесения каких-либо изменений в запросы.
Ускорение запросов также предназначено для приложений обработки данных. Приложения этих типов обычно выполняют крупномасштабные преобразования данных, которые могут не давать непосредственно полезные аналитические сведения, поэтому они не всегда используют общепринятые платформы распределенной аналитики. Эти приложения часто имеют более прямую связь с базовой службой хранения, поэтому они могут получить явное преимущество от использования таких возможностей, как ускорение запросов.
Пример интеграции ускорения запросов в приложении см. в статье Фильтрация данных с помощью ускорения запросов Azure Data Lake Storage.
Цены
В связи с увеличенной нагрузкой, связанной с вычислениями, в службе Azure Data Lake Storage модель ценообразования для использования ускорения запросов отличается от обычной модели транзакций Azure Data Lake Storage. При ускорении запросов взимается плата за объем проверенных данных, а также за объем данных, возвращаемых вызывающему объекту. Дополнительные сведения см. на странице Цены на Azure Data Lake Storage 2-го поколения.
Модель ценообразования для ускорения запросов предназначена для снижения совокупной стоимости владения рабочей нагрузкой с учетом снижения куда более высоких затрат на виртуальные машины, даже несмотря на изменение модели выставления счетов.