Классика баз данных - статьи

       

Проблемы производительности и масштабируемости


В системах РБД для выборки небольшого количества нужных записей без полного сканирования таблицы или базы данных используются различные методы доступа, такие как индексы на основе хеширования или B+-деревьев. Такие методы доступа весьма эффективны при выборке по одному ключевому полю (или небольшому числу полей), когда результаты представляют собой малую часть таблицы. Примерами подобных запросов являются: >, > или >. Для быстрого ответа на такие запросы можно создать индексы: на столбце > таблицы >, на столбце > таблицы > и на столбцах > и > таблицы > соответственно.

Однако методы доступа в общем случае не помогают при ответе на запросы, результатами которых является значительная часть таблицы. Примерами являются запросы: >, > и >. Кроме того, методы доступа не приносят пользы, если значения столбца часто изменяются, поскольку такие изменения требуют перестройки методов доступа. Это примеры > запросов, для выполнения которых методы доступа в системах РБД оказываются бесполезными.

Помимо подобных > запросов существуют два класса операций, для которых методы доступа в системах РБД становятся бессильными. К первому классу относятся операции >, предусматривающие группировку всех записей таблицы и применение к сгруппированным записям агрегатных функций (среднего значения, общего числа, суммы, минимального или максимального значения). Этот тип операций важен в таких приложениях как анализ данных Web-журналов, сегментации данных о заказчиках и т.д. Различные методы, связанные с проблемой эффективности операций этого класса, анализируются в [7], включая сжатие данных, метод хранения таблицы по полям (хранение каждого поля таблицы как отдельного файла), предварительные вычисления (гиперкубов OLAP, сводных таблиц) на основе детализированных данных, нормализацию (разбиение таблицы на несколько более мелких таблиц) и параллельную обработку. На рынке имеются продукты MaxScan и Ab Initio, предназначенные для решения проблем производительности и масштабируемости при выполнении данного типа операций.
В MaxScan применяется метод хранения таблиц по полям, методы хеширования для группировки и агрегирования записей, а также методы параллельной обработки. Производительность и масштабируемость при выполнении агрегатных операций в 10-20 раз превышают показатели систем РБД. Ab Initio является средством ETL, в котором в механизме трансформации данных используются методы повышения производительности.

К другому классу относится операции >, читающие и/или записывающие файл(ы) целиком. Этот тип операций важен на этапе требующем больших временных затрат > при создании хранилища данных или на этапе > при автоматическом извлечении знаний (добыче данных) из имеющихся источников [8]. Этап преобразования данных включает трансформацию формата и представления данных в заданных полях (изменение единицы измерения, изменение формата даты и времени, изменение аббревиатуры и т.д.), слияние двух или более полей в одно, расщепление поля на два или более полей, сортировку таблицы, построение обобщенной таблицы из таблиц, содержащих детализированные данные, создание новой таблицы путем соединения двух или более таблиц, слияние двух или более таблиц в одну, расщепление таблицы на две или более и т.д. К этапу подготовки данных относятся преобразование данных заданного поля в цифровой код (в нейронных сетях), преобразование непрерывных цифровых данных в заданном поле в категорические данные (например, возраст, превышающий 60 лет, считается >), добавление к записи нового поля, взятие из таблицы образцов данных, репликация в таблице некоторых записей (для достижения желаемого распределения записей) и т.д. Более подробное обсуждение этих операций приводится в [9].

Сегодня операции перемещения файлов находятся в почти полной зависимости от последовательных операций систем РБД над файлами, т.е. чтения одного или более файлов, создания временного файла и записи результирующего файла или файлов. Частота выполнения подобных операций и объем используемых данных может сделать оправданным применение сервера преобразования/подготовки данных.


В идеале такой сервер может состоять из нескольких параллельно работающих процессоров. Независимо от конфигурации процессора на нем должны выполняться программные средства преобразования/подготовки данных, спроектированные для параллельной обработки. Когда это оправданно, нужно применять конвейерную параллельную обработку, при которой получение частичных результатов одной операции инициируют выполнение другой операции без потребности ожидания завершения первой операции. Конвейерная параллельная обработка устраняет потребность в записи во временный файл полных результатов одной операции и в их чтении следующей операцией, что позволяет сэкономить два ввода-вывода файла. Для создания сводных таблиц вместо > функций системы РБД имеет смысл использовать механизм быстрой сортировки, такой как SyncSort, или механизм быстрого агрегирования, такой как MaxScan. Кроме того, для выполнения вычислений > (выборка образцов, преобразование формата или представления данных и т.д.) имеет смысл разбить файл на несколько подфайлов и назначить каждому из них отдельный процессор для обеспечения параллельной обработки.


Содержание раздела