Мунерман В.И.1, Мунерман Д.В.2
гФГБОУ ВПО Смоленский государственный университет (СмолГУ), г. Смоленск, к.т.н., доцент,
vimoon@gmail .com
2ФГБОУ ВПО Смоленский государственный университет (СмолГУ), г. Смоленск,
danvmoon@ gmail . com
АЛГЕБРАИЧЕСКИЙ ПОДХОД К ПОСТРОЕНИЮ ПРОГРАММНО-АППАРАТНЫХ КОМПЛЕКСОВ ДЛЯ ПОВЫШЕНИЯ ЭФФЕКТИВНОСТИ МАССОВОЙ ОБРАБОТКИ ДАННЫХ
КЛЮЧЕВЫЕ СЛОВА
Базы данных, параллельное программирование, архитектуры вычислительных комплексов.
АННОТАЦИЯ
В статье рассматривается проблема оптимизации массовой обработки структурированных больших данных. Обработка такого типа данных часто встречается во многих информационных системах и имеет высокую вычислительную сложность. Для решения проблемы повышения эффективности массовой обработки данных предлагается подход, основанный на промежуточных моделях данных, и рассматриваются SQL-реляционная и файловая модели данных. Показано, что на основе этих моделей можно проектировать программно-аппаратные комплексы, ориентированные на эффективное решение конкретных задач в информационных системах.
Работа проводилась в рамках грантов, предоставленных Смоленскому государственному университету корпорацией Microsoft.
В статье рассматривается проблема оптимизации массовой обработки структурированных больших данных (МОД). Традиционно такой вид обработки данных широко используется для решения многих задач в различных предметных областях в тех случаях, когда в вычисления включается значительная часть содержащихся в базе данных. К числу таких в задач экономике относятся: оперативная статистическая обработка данных, задача "Завершение операционного дня банка", ежедневные задачи учета и планирования производства в современных системах управления, задачи статистического анализа и синтеза подсистем послепродажного обслуживания в системах интегрированной логистической поддержки наукоемкой продукции.
Современное состояние вычислительной техники и возможности систем программирования позволяют проводить оптимизацию рассматриваемого вида обработки на различных уровнях и различными методами. Рассматриваемая в статье технология МОД основана на сочетании файловой (теоретико-множественной) модели данных [1, 2, 3], связывающей исходную модель данных и модель вычислений, и SQL-реляционной модели. Между этими двумя моделями может быть установлено, в зависимости от требований решаемой задачи, как гомоморфное, так и изоморфное соответствие. В статье рассматривается параллельная реализация алгебраических выражений запросов, представляющих собой цепочки операций слияния нестрого упорядоченных файлов. В SQL-реляционной модели этой операции соответствует операция соединения JOIN.
Строго упорядоченным файлам Xl и Ym соответствуют таблицы Р и R во второй или третьей нормальной форме по составным ключам, соответствующим множествам ключей L и M. Операции слияния нестрого упорядоченных файлов Xl и Ym по множеству ключей K, которому соответствует простой или составной ключ K, в таблицах Р и R, соответствует операция Р INNER JOIN R ON п (Р .K, R.K). На практике операция JOIN реализуется при следующих условиях, которые соответствуют требованиям к операции слияния нестрого упорядоченных файлов:
• на множестве экземпляров ключа K задано отношение эквивалентности;
• таблицы Р и R имеют разные схемы, в каждую из которых входит ключ K;
• предикат п определен на множествах экземпляров ключа K в таблицах Р и R и имеет
вид P .K = R.K.
В общем случае, файлы Xl и Ym нестрого упорядочены, тогда соответствующие им таблицы P(K, ...) и R(K, ...) будут в первой нормальной форме. В этом случае, таблицы, как и файлы, состоят из классов эквивалентности, в которых все строки содержат один и тот же экземпляр ключа K. Тогда для параллельной реализации операции JOIN можно метаданные, определяющие распределение строк таблицы по классам эквивалентности, основанное, как и в случае файловой модели данных, на индексно-последовательном методе доступа (ISAM).
Пусть Ki, ..., K„ - множество экземпляров ключа K. Таблицы P(K, ...) и R(K, ...) имеют схемы, которые содержат ключ K и произвольные наборы полей (как правило, различные). Таблице P можно поставить в соответствие индексную таблицу со схемой indP(K, I, M). Эта таблица - есть множество строк indP = {(K1,i1 ,m1),..., (Kn,in,mn)} . Здесь ij - индекс первой записи класса эквивалентности, строки которого содержат экземпляр Kj ключа K, mj - количество записей в этом классе эквивалентности. Поле I имеет тип Счетчик строк, а поле М - целочисленное. Таблица indP может быть получена в результате двух запросов:
1. Q1=INSERT INTO indPt ( K, I, M )
SELECT P.K, 1 AS M FROM P ORDER BY PK;
2. Q2=SELECT indPt.K, First(indPt.I) AS I, Sum(IndPt.M) AS M
INTO indP FROM indPt
GROUP BY indPt.K ORDER BY indPt.K Запрос Q1 формирует промежуточную таблицу indPt, которая содержит столько же строк, что и таблица P, схема этой таблицы состоит из трех полей: ключ K, номер строки и поле M, содержащее значение 1. Запрос Q2 завершает построение таблицы indP посредством операции группировки. Этому двухпроходному алгоритму соответствует простой однопроходный алгоритм, который легко разработать на любом языке программирования, связанным с СУБД, или на языках манипулирования данными, такими как Tranzact-SQL или PL-SQL. Листинг 1 демонстрирует реализацию однопроходного алгоритма построения индексного файла для индексно-последовательного доступа к таблице P.
Листинг 1. Построение индексного файла средствами языка Tranzact-SQL DECLARE @K <тип>, @Kcurrent <тип>, @I int, @M int, @RowCount int, @j int DELETE FROM indP
DECLARE cursorP CURSOR FOR SELECT K FROM P ORDER BY K OPEN cursorP
SET @RowCount =@@Cursor_Rows SET @j=0
FETCH NEXT FROM cursorP INTO @K SET @Kcurrent =@K SET @I=1 SET @M=1
WHILE @j<@ RowCountn1 BEGIN
FETCH NEXT FROM cursorP INTO @K
IF @Kcurrent =@K
BEGIN
SET @M=@M+1
END
ELSE
BEGIN
INSERT INTO indP (K, I, M) VALUES (@Kcurrent, @I, @M) SET @Kcurrent =@K SET @I=@I+@M SET @M=1
END
SET @j=@j+1
END
Таблица indR для таблицы R может быть получена аналогично.
Очевидно, что таблица-результат операции JOIN будет содержать только те классы
эквивалентности, которые принадлежат пересечению индексных таблиц indPynindR. Запрос, в результате которого получается это пересечение, имеет вид: SELECT indP.K, indP.M*indR.M AS MM, indP.I, indR.I, indP. M, indR. M INTO ComInd FROM indP, indR WHERE indP.K= indR.K
Результат запроса - таблица ComInd. Она содержит составной ключ К, поля I и M обеих индексных таблиц, а также поле MM. Значение поля MM вычисляется как произведение количества строк в обоих классах эквивалентности, строки которых содержат одно и то же значение составного ключа K. Это значение определяет число выходных строк, которое получится в результате обработки этих классов эквивалентности операцией JOIN.
Использование таблицы ComInd позволяет распределить таблицы P и R между несколькими независимыми базами данных. Если имеется N таких баз данных, то эти таблицы разделяются на N фрагментов. Каждая база данных DBSnp,- содержит пару фрагментов <P, Ri > таблиц P и R. При этом классы эквивалентности, записи которых содержат одинаковые значения ключа K, полностью расположены в одном и только одном фрагменте. Такой способ распределения таблиц называется принципом симметричного горизонтального распределения данных. Для реализации симметричного горизонтального распределения таблиц P и Q используется алгоритм бустрофедона, который в простейшем случае может быть реализован так, как показано в листинге 2. Для простоты таблица ComInd читается одновременно от начала до середины и от конца до середины.
Листинг 2. Реализация симметричного горизонтального распределения средствами языка Tranzact-SQL
DECLARE @KA <тип>, @KD <тип>, @RowCount int, @i int DECLARE cursorASC CURSOR FOR SELECT K, MM FROM ComInd ORDER BY MM
DECLARE cursorDSC CURSOR FOR SELECT K, MM FROM ComInd ORDER BY MM DESC OPEN cursorASC OPEN cursorDSC
SET @ RowCount =@@Cursor_Rows IF @ RowCount %2=0
SET @RowCount =@RowCount /2
ELSE
SET @RowCount =@RowCount /2+1 SET @i=0
WHILE @i<@RowCount BEGIN
FETCH NEXT FROM cursorASC INTO @ KA FETCH NEXT FROM cursorDSC INTO @ KD IF @i % N=0 BEGIN
INSERT INTO PSnpl SELECT * FROM P WHERE K=@KA INSERT INTO PSnpl SELECT * FROM P WHERE K=@KD INSERT INTO RSnpl SELECT * FROM R WHERE K=@KA INSERT INTO RSnpl SELECT * FROM R WHERE K=@KD
END
IF @i % N=N-1 BEGIN
INSERT INTO PSnpN SELECT * FROM P WHERE K=@KA INSERT INTO PSnpN SELECT * FROM P WHERE K=@KD INSERT INTO RSnpN SELECT * FROM R WHERE K=@KA INSERT INTO RSnpN SELECT * FROM R WHERE K=@KD
END
SET @i=@i+1
END
После выполнения этого алгоритма количества строк таблицы-результата, получаемые в
результате операции JOIN над фрагментами Pi и R таблиц P и R, будут минимально отличаться друг от друга. Симметричное горизонтальное распределение фрагментов таблиц P и R между базами данных DBSnpi позволяет проектировать программно-аппаратные комплексы, позволяющие повысить эффективность МОД за счет распараллеливания операции JOIN.
Программно-аппаратная реализация МОД. Рассматриваемому варианту МОД присущи регулярные запросы. Такие запросы разрабатываются прикладным программистом в процессе проектирования автоматизированной информационной системы, после чего существуют практически без изменений на протяжении всего жизненного цикла системы. Следовательно, затраты на трансляцию запроса, его оптимизацию, создание библиотечной программы, аналогичной хранимой процедуре, имеют разовый характер и не наносят ущерба как разработчику - профессиональному прикладному программисту, - так и самой информационной системе во время ее эксплуатации.
Особенность современного состояния вычислительной техники состоит в том, что, во-первых, используются гибкие архитектуры современных аппаратных средств, основанные на многоядерности и многопроцессорности, и, во-вторых, вычислительные сети обеспечивают такую простоту коммуникаций, которая позволяет легко проектировать различные топологии сетей. Эти два фактора - регулярность запросов и гибкость вычислительных средств - позволяют решать задачи оптимизации архитектуры программно-аппаратного вычислительного комплекса на этапе разработки автоматизированной информационной системы. Причем для каждой системы, входящей в ее состав задачи или даже отдельного запроса может быть разработан индивидуальный программно-аппаратный вычислительный комплекс.
Таким образом, в задачах МОД можно выделить две основные цели оптимизации: ускорение отдельных операций обработки одного или нескольких файлов, и построение оптимальных последовательностей операций (процессов или запросов) для решения конкретных задач.
На основе файловой модели становится возможной оптимизация отдельных операций за счет применения различных параллельных архитектур вычислительных комплексов, реализующих выполнение операций. То есть, она позволяет производить двухуровневую оптимизацию, как на уровне операций, так и на уровне процессов. Наибольшую сложность при решении проблемы параллельной обработки больших объемов данных имеют операция слияния нестрого упорядоченных файлов и процессы, состоящие из последовательностей таких операций.
Далее рассматривается построение программно-аппаратного комплекса, который может эффективно решать различные задачи МОД. В терминах файловой модели данных алгебраической моделью процесса МОД служит алгебраическое выражение вида A = E(Ai, ..., Ap), правая часть которого состоит из файлов Ai, ..., Ap, соединенных знаками операций над файлами, а левая - из выходного файла. Далее рассматриваются только аддитивная операция слияния строго упорядоченных файлов и мультипликативная операция слияния нестрого упорядоченных файлов. Тогда правая часть алгебраического выражения E(Ai, ..., Ap) может быть сведена к "сумме произведений" исходных файлов. Как было сказано, в реляционной модели данных операции слияния нестрого упорядоченных файлов соответствует операция JOIN. Далее рассмотрена архитектура вычислительного комплекса для параллельного вычисления цепочки "произведений" файлов, то есть, в терминах SQL-реляционной модели данных, вычисления выражения запроса вида:
SELECT <список полей> FROM
(Ap INNER JOIN SELECT <список полей> FROM (Ap.i INNER JOIN ...
SELECT <список полей> FROM (A2 INNER JOIN Ai ON П 1) ... ) ON np-i )
Для вычисления этого запроса может быть эффективно использована конвейерная (MISD) архитектура вычислительного комплекса [11, 12] (рисунок 1).
Этот комплекс состоит из p-1 /o/n-процессора, первый из которых начинает обработку первых двух "сомножителей". Как только готов очередной фрагмент (один или несколько классов эквивалентности) результата, он передается следующему /o/n-процессору, который обрабатывает этот фрагмент с соответствующим классом эквивалентности файла A3, и так далее по конвейеру. Последний Jo/n-процессор конвейера принимает классы эквивалентности, полученные в результате предыдущих произведений и обрабатывает их с соответствующими классами эквивалентности последней таблицы в цепочке.
Уо/п-процсссор 1
- ц -
Фрагмент At. JOIN^2
f— Ai
3E
join -процессор 2
Фрагмент
А: JOIN А2
JOIN А;
Al
TF
A
Фрагмент A: JOIN A2 JOIN A3 JOIN Ap. 1
Ж
^о/л-процессорр-!^
ГЧГ)
Рис.1. Конвейерный вычислительный комплекс для вычисления цепочки операций Join
Среди операций МОД операция JOIN имеет наибольшую вычислительную сложность. На основе файловой модели Join-процессор можно организовать, как вычислительный комплекс на основе SIMD-архитектуры (рисунок 2).
Gil- ■•> Gil,
...
Gm>
Фрагмент-процессор 1 —
Р Фрагмент-процессор N —
{/)-фрагмент или {i. У)-фрагмент
Рис. 2. SIMD-архитектура Join-процессора
Фрагменты таблиц-операндов, обрабатываемых i-тым фрагмент-процессором, можно рассматривать как совокупность пар Gi ..., G^ каждая из которых содержит два соответствующих
друг другу класса эквивалентности таблиц-операндов. Размещение данных в памяти фрагмент-процессоров производится на основе принципа симметричного горизонтального распределения.
Фрагмент-процессор выполняет операцию JOIN над фрагментами файлов и передает на выход либо весь результат операции, либо фрагмент, содержащий результат декартова произведения классов эквивалентности очередной пары Gj.
При таком сочетании конвейерной (MISD) и SIMD-архитектур вычислительных комплексов [4, 5] можно добиться значительного повышения эффективности процессов МОД.
Для проверки предложенных методов повышения эффективности МОД проведен ряд вычислительных экспериментов [6, 7, 8, 9], в которых на основе теоретико-множественной и многомерно-матричной моделей были построены программно-аппаратные комплексы с различными архитектурами:
• симметричное мультипроцессирование (SMP) на основе рабочей станции с четырехядерным процессором Intel Core i7 (с технологией Hyper Threading);
• массово-параллельная архитектура на основе локальной вычислительной сети с однотипными рабочими станциями;
• массово-параллельная архитектура на основе облачной системы Windows Azure c распределением вычислений между виртуальными машинами и отдельными базами данных.
В результате применения принципа симметричного горизонтального распределения данных на виртуальных вычислительных комплексах с предложенной архитектурой было получено от 6-кратного до 20-кратного ускорение решения задач МОД (в зависимости от количества используемых вычислительных ресурсов).
Из сказанного можно сделать вывод о том, что применение файловой (теоретико-множественной модели) в качестве средства, связывающего высокоуровневую SQL-реляционную модель данных с архитектурами программно-аппаратных вычислительных комплексов, позволит существенно повысить эффективность массовой обработки структурированных данных. Кроме того, предложенные методы параллельной реализации задач массовой обработки данных открывают следующие возможности:
1. Создание на основе гибких архитектур современных средств вычислительной техники виртуальных программно-аппаратных комплексов индивидуально для каждой конкретной задачи массовой обработки интенсивно используемых данных, наилучшим образом приспособленных для реализации алгоритмов решения именно этой задачи, и учитывающих характер обрабатываемых данных. Эти комплексы могут быть построены на основе серийных вычислительных средств, что существенно снижает уровень материальных затрат;
2. Использование для разработки и реализации программного обеспечения стандартных систем программирования и СУБД. При этом разработка не требует высокого уровня искусства программирования, так как основана на достаточно простой технологии программирования. Использование любого программного обеспечения, уже приобретенного или открытого, также снижает материальные затраты, необходимые для решения задач МОД;
3. Сокращение времени решения задач повышает степень актуальности информации, что особенно важно при работе с большими данными.
Литература
1. Левин Н.А., Мунерман В.И. Модели обработки больших объемов данных в системах массового параллелизма. -Системы высокой доступности, № 1, 2013, т.9, с. 35-43.
2. Левин Н.А., Мунерман В.И. Реализация объектно-ориентированной модели массовой обработки данных. -Системы высокой доступности, № 3, 2012, т.8, с. 23-25.
3. Мунерман В.И. Объектно-ориентированная модель массовой обработки данных. - Системы высокой доступности, № 4, 2011, т.7, с. 72-74.
4. Flynn M.J. Computer Organization and Architecture / / Operating Systems, An Advanced Course. - Springer, 1978 (Lecture Notes in Computer Science; Vol.60). - Р. 17-98.
5. Flynn M.J. Rudd K. W. Parallel architectures // ACM Computing Surveys. 1996. - Vol. 28, No. 1. - P. 67-70.
6. Макаров Д.И., Мунерман В.И. Параллельная реализации операции соединения для массовой обработки данных. -Системы высокой доступности, № 3, 2012, т.8, с. 26-28.
7. Мунерман В.И. Построение архитектур программно-аппаратных комплексов для повышения эффективности массовой обработки данных. - Системы высокой доступности, № 4, 2014, т.10, с. 3-16.
8. Мунерман В.И. Опыт массовой обработки данных в облачных системах (на примере Windows Azure). - Системы высокой доступности, № 2, 2014, т.9, с. 3-8.
9. Мунерман В.И. Реализация обработки больших объемов данных на симметричных мультипроцессорных системах. - Системы высокой доступности, № 2, 2013, т.9, с. 36-9.