Академический Документы
Профессиональный Документы
Культура Документы
Л. Б. Соколинский
Параллельные системы
баз данных
Суперкомпьютерный
консорциум
университетов России
Серия
Суперкомпьютерное
О бразование
Координационный совет
Системы научно-образовательных центров
суперкомпьютерных технологий
Председатель Координационного совета
В. А. Садовничий,
ректор МГУ имени М. В. Ломоносова,
академик
Зам естители председателя совета
Е. И. Моисеев,
декан факультета вычислительной математики и кибернетики
МГУ имени М. В. Ломоносова,
академик
А. В.Тихонравов,
директор Научно-исследовательского вычислительного центра
МГУ имени М. В. Ломоносова,
профессор
Члены совета
В. Н. Васильев , ректор Санкт-Петербургского национального исследова
тельского государственного университета информационных технологий, механики
и оптики, чл.-корр. РАН, профессор; В. Г. Захаревич , ректор Южного феде
рального университета, профессор; Н. Н. Кудрявцев , ректор Московско
го физико-технического института, чл.-корр. РАН, профессор; Г. В. М айер ,
ректор национального исследовательского Томского государственного уни
верситета, профессор; А. А. Фаткулин , проректор по науке и инновациям
Дальневосточного федерального университета, профессор; Е. В. Чупрунов,
ректор националь ного исследовательского Ниже городского го су дарственного
университета, профессор; А. Л. Шестаков , ректор национального иссле
довательского Южно-Уральского государственного университета, профессор;
В. Н. Чубариков , декан механико-математического факультета МГУ имени
М. В. Ломоносова, профессор; М. И. Панасюк , директор Научно-исследо
вательского института ядерной физики МГУ имени М. В. Ломоносова, профес
сор; Вл. В. Воеводин , заместитель директора Научно-исследовательского
вычислительного центра МГУ имени М. В. Ломоносова, исполнительный директор
НОЦ «СКТ-Центр», член-корреспондент РАН.
Национальный исследовательский
Южно -Уральский государственный университет
Л.Б.Соколинский
Параллельные системы
баз данных
Допущено
УМО по классическому университетскому образованию
в качестве учебного пособия для студентов высших учебных заведений,
обучающихся по направлениям ВПО
010400 «Прикладная математика и информатика»
и 010300 «Фундаментальная информатика
и информационные технологии»
Соколи нский Л. Б.
С59 Параллельные системы баз данных: Учебное пособие / Предисл.:
В. А. Садовничий. - М.: Издательство Московского университета,
2013. - 184 с., илл. - (Серия «Суперкомпьютерное образование»)
ISBN 978-5-211-06482-9
Цель учебного пособия состоит в изложении основ технологий параллель
ных систем баз данных. Особое внимание уделяется вопросам реализации
СУБД для кластерных систем. Дается классификация известных форм парал
лельной обработки транзакций. Приводится сравнительный анализ различ
ных архитектур параллельных систем баз данных. Рассматриваются возмож
ные технологические подходы к организации параллельной обработки за
просов. Обсуждается итерационная модель, синхронный и асинхронный
конвейеры. Излагаются методы фрагментации данных и способы организа
ции межпроцессорных обменов. Предлагается подход к автоматическому пре
образованию последовательного плана выполнения запроса в параллельный.
Большое внимание уделяется вопросам моделирования параллельных систем
баз данных и организации эффективной буферизации в условиях использова
ния фрагментного параллелизма.
Книга ориентирована на студентов, аспирантов и научных работников, спе
циализирующихся в области разработки технологий параллельных систем
баз данных и их применения для обработки сверхбольших объемов данных на
современных многоядерных и многопроцессорных системах с кластерной ар
хитектурой.
Ключевые слова: параллельные системы баз данных, фрагментный парал
лелизм, асинхронный конвейер, балансировка загрузки, моделирование па
раллельной обработки транзакций, алгоритм LFU-K.
УДК 007 (075)
ББК 32.973.2
Введение............................................................................................................ 9
ЧАСТЬ I. АРХИТЕКТУРА ПАРАЛЛЕЛЬНЫХ СИСТЕМ БАЗ ДАН
НЫХ.................................................................................................................. 13
Глава 1. Базисные концепции........................................................................ 15
§ 1.1. Введение в параллельную обработку запросов......................... 15
§ 1.2. Формы параллельной обработки транзакций........................... 21
§ 1.3. Определение параллельной системы баз данны х..................... 27
Глава 2. Классификация параллельных архитектур................................... 33
§ 2.1. Структурно-функциональная классификация......................... 34
§ 2.2. Виртуально-иерархическая классификация.............................. 37
Глава 3. Требования к параллельной системе баз данных.......................... 45
§ 3.1. Масштабируемость.......................................................................... 45
§ 3.2. Производительность ...................................................................... 47
§ 3.3. Доступность данных....................................................................... 52
§ 3.4. Сравнительный анализ архитектур параллельных систем баз
данных .............................................................................................. 53
ЧАСТЬ II. ТЕХНОЛОГИИ ПАРАЛЛЕЛЬНЫХ СИСТЕМ БАЗ ДАН
Н Ы Х ................................................................................................................. 57
Глава 4. Выполнение запросов....................................................................... 59
§ 4.1. Итераторы......................................................................................... 59
§ 4.2. Синхронный конвейер................................................................... 61
§ 4.3. Асинхронный конвейер ................................................................. 75
Глава 5. Распределение данных..................................................................... 81
§ 5.1. Фрагментация данны х................................................................... 81
§ 5.2. Пересылка данных .......................................................................... 86
§ 5.3. Оператор обмена exchange............................................................. 89
Глава 6. Модель параллельной системы баз данных.................................. 94
§ 6.1. Определения из теории графов..................................................... 94
8 Оглавление
Архитектура
параллельных систем
баз данных
Глава 1
Базисные концепции
t *!>
i
гг ■ %
i
x «.
I %
/
'1[ ^----- V
Г И - Г /Н Г ,1 ]
И м я II.
) х [Ц>
Параллельный агент А „
приц 'М1ЧЖ1М!'.
Е г
#t ^чч
Последовательный план
Классификация
параллельных архитектур
§ 2.1. Структурно-функциональная
классификация
В основе структурно-функциональной классиф икации лежат
структурные различия в компоновке различных функциональных
элементов, основны ми из которых являю тся процессоры и опе
ративная память. В соответствии с данны м подходом, выделяют
следующие четыре класса мультипроцессорных систем:
(1) SM P (Symmetric M ultiprocessor) —симметричные мульти
процессорны е системы;
(2) NUMA (N on-U niform M emory Architecture) —мультипро
цессорны е системы с неоднородным доступом к памяти;
(3) MPP (Massively Parallel Processing) —массово-параллельные
системы;
(4) Кластеры —наборы полноценных компьютеров, объеди
ненны х в единую вычислительную систему.
SMP-архитектуры представляют собой многопроцессорные
системы , в которых все процессоры соединены посредством
ш ины или коммутатора типа crossbar с общей оперативной п а
мятью. В таких системах время обращ ения к физически единой
общей памяти одинаково для всех процессоров. Поэтому SM P-
системы относят к классу UMA (Uniform Memory Architecture).
Узким местом ранних SM P-систем являлась общая ш ина доступа
к оперативной памяти, унаследованная им и от мини-ЭВМ . В силу
этого количество процессоров в них редко превыш ало 32. Во
второй половине 90-х годов прошлого века в SM P системах шину
заменили системным коммутатором. С его помощью оказалось
Глава 2. Классификация параллельных архитектур 35
§ 2.2. Виртуально-иерархическая
классификация
Одноуровневые архитектуры
Одноуровневые архитектуры параллельных систем баз данных
были классиф ицированы М айклом Стоунбрейкером (M ichael
Stonebraker) в работе [29]. В основе классиф икации Стоунбрей-
кера лежат различия в способе разделений процессорами аппа
ратных ресурсов —оперативной памяти и дисков. В соответствии
с классификацией Стоунбрейкера, одноуровневые параллельные
системы баз данных могут быть разделены н а следующие три
базовых класса:
(1) SE (Shared-Everything) —архитектура с разделяемыми п а
мятью и дисками;
(2) SD (Shared-Disks) — архитектура с разделяемыми диска
ми;
(2) S N (Shared-Nothing) — архитектура без совместного и с
пользования ресурсов.
SE-архитектура (в работе [29] эта архитектура обозначается
как Shared-Memory) представляет системы баз данных, в кото
рых все диски напрямую соединены со всеми процессорами, и
все процессоры разделяю т общую оперативную память [рис. 12
(а)]. М ежпроцессорные ком муникации в SE-системах осущест
вляю тся через общую оперативную память. Доступ к дискам в
SE-системах обычно осуществляется через общий буферный пул.
П ри этом следует отметить, что каждый процессор в SE-системе
имеет собственную кэш -пам ять.
Существует больш ое количество параллельны х систем баз
данных с SE-архитектурой. По существу все ведущие ком мерче
ские СУБД сегодня имею т реализацию н а базе SE-архитектуры.
В качестве одного из первых прим еров портирования с одно
п роц ессорн ой систем ы н а SE-архитектуру м ож но привести
реализацию DB2 н а IBM3090 с 6 процессорам и. Другим при-
38 Глава 2. Классификация параллельных архитектур
Гибридные архитектуры
В основу классиф икации Стоунбрейкера был положен способ
разделения процессорами аппаратных ресурсов. Этот критерий
представляет собой плохой базис для классиф икации архитек
тур современных параллельных систем баз данных. Это связа
но с тем, что современны е м ногопроцессорны е системы, как
42 Глава 2. Классификация параллельных архитектур
Архитектура
правило, имею т сложную структуру
мкогом роцессорн ^'й системы
аппаратных ком понент и совмещают
в себе свойства различных классов архитектур. П римерами п о
добны х систем являю тся отечественные м ногопроцессорны е
системы серии М ВС -100/1000, м ногопроцессорны е системы
SP2 ком пании IBM , компью теры н а базе технологии ServerNet
корпорации Tandem и др. Классификация Стоунбрейкера оказы
вается неадекватной применительно к параллельным системам
баз данных, реализуемых н а подобных платформах. Это п р о
исходит потому, что в соответствии с классическим подходом
Стоунбрейкера, мы пытаемся отобразить архитектуры парал
лельной системы баз данных непосредственно н а аппаратную
архитектуру м ногопроцессорной системы, как это оказано на
рис. 13. Указанную классификационную проблему можно решить
путем введения некоторого дополнительного уровня абстракции,
базирующегося н а понятии виртуальной параллельной м аш ины
баз данных. Архитектура параллельной системы баз данных ото
бражается н а архитектуру виртуальной параллельной маш ины
баз данных, которая в свою очередь
отображается на ту или иную аппарат
ную архитектуру многопроцессорной
системы, как это показано н а рис. 14.
Такой подход называется виртуально
иерархическим. П ри использовании
ви р ту а л ь н о -и е р а р х и ч е с к о го к л а с
сиф икационного подхода критерий
Требования к параллельной
системе баз данных
§ 3.1. Масштабируемость
Важным свойством параллельных систем является возм ож
ность их поэтапного наращ ивания в целях адаптации к увели
чивающемуся размеру базы данных или возрастаю щ им требова
ниям производительности. Это достигается путем добавления в
конфигурацию системы дополнительных процессоров, модулей
памяти дисков и других аппаратных компонент. Д анны й п ро
цесс назы вается масштабированием системы . П ри удвоении
аппаратной мощ ности системы мы можем ожидать, что ее п ро
46 Глава 3. Требования к параллельной системе баз данных
t QA
a AB
t QB
l QkAk .
e km
t QmAm
§ 3.2. Производительность
Среди характеристик СУБД, которые необходимо учитывать
при выборе инструментальной системы для реализации к о н
48 Глава 3. Требования к параллельной системе баз данных
Межпроцессорные коммуникации
К ак было показано в параграфе 1.1, корректное вы полнение
параллельного плана требует передачи кортежей между парал
лельными агентами, вы полняемыми н а различных процессорах.
В соответствии с этим , архитектура, позволяю щ ая более э ф
фективно реализовать межпроцессорные коммуникации, будет
иметь при прочих равных преимущество в достижении вы сокой
производительности, по сравнению с другими архитектурами.
М етоды организации меж процессорных ком м уникаций будут
детально рассмотрены в главе 5.
Когерентность кэшей
С овременны е м ногопроцессорны е м ногоядерны е системы
имею т в своем составе сверхбыструю кэш -пам ять нескольких
уровней. Для случая систем баз данных в качестве кэш а началь
ного уровня фигурирует оперативная память, используемая для
буферизации дисковых страниц. В системах баз данных страница
является м иним альной порцией инф орм ации, вовлекаем ой в
единичный обмен с дисками. Это означает, что когда нам н е
обходимо считать из базы данных кортеж, мы должны считать с
диска всю страницу, содержащую этот кортеж. П ри этом считан
50 Глава 3. Требования к параллельной системе баз данных
Организация блокировок
Основной единицей работ в системах баз данны х являю тся
A C ID -транзакции [4]. Особенно важным является свойство con
sistency, предполагающее, что база данных до и после выполнения
транзакции находится в согласованном состоянии. П ри парал
Глава 3. Требования к параллельной системе баз данных 51
Балансировка загрузки
Б а л а н с и р о в к а загр у зк и п р о ц е с со р о в я в л я е тс я о д н о й из
ключевых проблем для обеспечения вы сокой эф ф ективности
параллельной обработки запросов. СУБД долж на разбивать
запрос н а п араллельны е агенты и распределять их по п р о
цессорам таким образом, чтобы обеспечивалась равном ерная
загрузка всех задействованных процессоров. О собенно остро
вопрос с балансировкой загрузки возникает при использовании
фрагментного параллелизма. Ф актором, которы й может сущ е
ственны м образом снизить эф ф ективность распараллеливания
реляционны х операций, особенно соединения и сортировки,
является величина перекоса, присутствую щ ая в данных, п од
лежащ их обработке. И сследования показали, что в реальных
базах данны х некоторы е значения для определенного атрибута
встречаю тся значительно чащ е, чем остальные. В частности,
для текстовых атрибутов характерно распределение значений
по закону Зи п ф а [4]. П одобная неоднородность назы вается
перекосом данных. Л акш м и (Lakshmi) и Ю (Yu) показали [23],
что п ри наличии перекоса данны х ускорение, достигаемое при
параллельны м вы полнении операций соединения, может быть
ограничено катастроф ическим образом по причине перегрузки
одних процессоров и недогрузки других. Более подробно п р о
блема б алансировки загрузки в условиях н ал и чи я п ерекоса
данны х будет нам и рассм отрена в главе 7.
52 Глава 3. Требования к параллельной системе баз данных
Архитектура
Критерий
SE SD SN CE CD CDN
Масштабируемость 0 1 2 3 3 3
Аппаратная отказоустойчи 0 3 2 2 3 3
вость
Баланс загрузки 3 3 0 1 1 1
Межпроцессорные комму 3 0 0 2 1 1
никации
Когерентность кэшей 3 0 3 3 2 3
Организация блокировок 2 0 3 2 1 3
Сумма баллов 11 7 10 13 11 14
Технологии
параллельных систем
баз данных
Глава 4
Выполнение запросов
§ 4.1. Итераторы
Выполнение физического плана заключается в согласованном
вы полнении нескольких операций физической алгебры, состав
ляющ их этот план. П ри этом мы должны определить: 1) способ
передачи кортеж ей от одной операции к другой; 2) механизм
синхронизации операций. Наиболее просты м реш ением этих
проблем в СУБД является механизм итераторов [4]. Итератор
(iterator), предусматривает использование группы из трех мето
дов, которые позволяю т потребителю результата работы опера
ции физической алгебры получать по одному кортежу в каждый
момент времени.
1. Метод open инициализирует структуры данных, необходи
мые для вы полнения операции, и вызывает ф ункции open
соответствующих аргументов данной операции.
2. Метод next возвращ ает очередной кортеж, модифицирует
значения во внутренних структурах данных, обеспечивая
возможность получения последующих кортежей, и обычно
один или несколько раз вызывает методы next аргументов
операции. Если множество кортежей исчерпано, next воз
вращ ает специальны й кортеж EOF, который, как предпо
лагается, нельзя спутать с обычным кортежем.
3. М етод close заверш ает итеративны й процесс получения
д ан н ы х , о сво б о ж д ает п а м я т ь , зан ятую с тр у кту р ам и
данных, использованны м и для вы полнени я операции,
и обычно вы зывает методы close аргументов данной опе
рации.
60 Глава 4. Выполнение запросов
void root_thredd(rOOtH
v o i d s e t _ q u i t _ f o r _ c h i Ldren (node) {
i f ( r o d e .le f t S o n ! - N ULL)(
n o d e .le f t S o n .q u it = true;
set. q u it f o r c h i Ldren (node . le ftS o n )
}г
i f (n o d e .rig h tS o n ! NQLLM
n o d e .riq h tS o rt.q u it = tru e ;
s e t q u it_ fp r _ c b ild r e n ( n o d e - rig h tS o n )
};
If
r o o t.in tt 0 i
r o o t.p r o d u c e (>;
w h ile ( r o o t.b n f ! ЕОГИ
p r in t( r o o t.b u f) ;
ro o t.p ro d u c e { ) ;
I;
s e t _ e jf it _ f a r _ c h ild r e n ( r o o t ) ;
r o o t . r e le a s e ( J ;
v o id e x -e c (ro o t) {
v o id s ta r t. e h ild _ tb r e a d s (node) (
i t (n o d e ,le ftS o n l= N P L L ) {
s t a r t _ c h i l d _ t h r e a d s (node. l e ftS o n ) ?
thre a d _ cxe a te (ch ild _ L h r e a d ., n o d e . l e ftS o n ) ;
};
i f ( n o d e .rig h tS o n !■ HULL) <
start_child_tbreads(node.rightSon) ;
th readme rea te(th ild^t h read,n ode.гightSOb)
I;
s ta rt_ c h ild _ th x e a d s (ro o t);
th re a d c r e a t e ( r o o t t h r e a d , r o o t ) ;
Алгоритм NLDJ
Алгоритм NLD J (Nested Loop Disk Join) вы полняет соединение
вложенными циклами для случая, когда оба входных отнош ения
66 Глава 4. Выполнение запросов
Алгоритм NLMJ
А лгоритм N L M J (Nested Loop Memory Join) вы полняет с о
единение влож енны м и циклам и для случая, когда м еньш ее
(опорное) отнош ение полностью пом ещ ается в оперативную
память. Во внеш нем цикле однократно сканируется тестируе
мое (большее) отнош ение. Во внутреннем цикле многократно
сканируется опорное отношение, предварительно загруженное в
70 Глава 4. Выполнение запросов
/ * - - Нить п о т р е б и т е л я - - * /
get_tuple(){
p t h r e a d mutex lo c k (& b u f l o c k ) ;
w hile(bufIsEm pty)
p t h r e a d c o n d w a i t ( & b u f n o t e m p t y , &buf l o c k ) ;
r e a d b u f (& b u f, & inT uple); / / чтение кортежа i n T u p l e из
буфера.
bufIsEmpty = tr u e ;
p t h r e a d mutex u n lo c k (& b u f l o c k ) ;
p t h r e a d cond sig n a l( & b u f i s empty);
};
/ * - - Нить п о с т а в щ и к а - - * /
put_tuple(){
p t h r e a d mutex lo c k (& b u f l o c k ) ;
w hile(!bufIsEm pty)
p t h r e a d c o n d w a i t ( & b u f i s e m p t y , &buf l o c k ) ;
w r i t e b u f ( & b u f , & o u t T u p l e ) ; / / з а п и с ь к о р т е ж а в б уф е р.
bufIsEmpty = f a ls e ;
p t h r e a d mutex u n lo c k (& b u f l o c k ) ;
p t h r e a d cond sig n a l( & b u f n o t empty);
};
Глава 4. Выполнение запросов 75
/ * - - Нить п о т р е б и т е л я -*/
get_tuples(){
s w i t c h ( k i n d o f consumer){
c a s e c o n j u n c t i o n a l : / / конъюнктивная н и т ь - п о т р е б и т е л ь
p t h r e a d mutex lo c k (& d ep o t1 l o c k ) ;
p t h r e a d mutex lo c k (& d ep o t2 l o c k ) ;
w h i l e ( T _ f a c t o r 1 * T _ f a c t o r 2 == 0)
i f ( T _ f a c t o r 1 == 0){
p t h r e a d mutex unlo c k (& d ep o t2 l o c k ) ;
p t h r e a d c o n d w a i t ( & n o t e m p t y 1, &depot1 l o c k ) ;
p t h r e a d mutex lo c k (& d ep o t2 l o c k ) ;
}else{
p t h r e a d mutex unlo c k (& d ep o t1 l o c k ) ;
p t h r e a d c o n d w a i t ( & n o t e m p t y 2, &depot2 l o c k ) ;
p t h r e a d mutex lo c k (& d ep o t1 l o c k ) ;
78 Глава 4. Выполнение запросов
};
r e a d tu p l e ( & d e p o t 1 , & i n T u p l e 1 ) ; / / чтение кортежа из
с к л а д а 1.
r e a d tu p l e ( & d e p o t 2 , & i n T u p l e 2 ) ; / / чтение кортежа из
с к л а д а 2.
i f ( T f a c t o r 1 == 1) / / н и т ь - п о с т а в щ и к 1 п р о с т а и в а е т
p t h r e a d cond s ig n a l( & n o t f u l l 1);
i f ( T f a c t o r 2 == 1) / / н и т ь - п о с т а в щ и к 2 п р о с т а и в а е т
p t h r e a d cond s ig n a l( & n o t f u l l 2);
T f a c t o r 1 = f ( & d e p o t 1 ) ; / / п е р е с ч е т T- ф а к т о р а дл я
с к л а д а 1.
T f a c t o r 2 = f ( & d e p o t 2 ) ; / / п е р е с ч е т T- ф а к т о р а дл я
с к л а д а 2.
p t h r e a d mutex unlo c k (& d ep o t1 l o c k ) ;
p t h r e a d mutex unlo c k (& d ep o t2 l o c k ) ;
break;
c a s e d i s j u n c t i o n a l : / / дизъюнктивная н и ть-п отреб и тель
p t h r e a d mutex lo c k (& d ep o t1 l o c k ) ;
p t h r e a d mutex lo c k (& d ep o t2 l o c k ) ;
p t h r e a d mutex l o c k ( & d i s j u n c t l o c k ) ;
w h i l e ( ! ( d i s j u n c t = ! ( T _ f a c t o r 1 + T _ f a c t o r 2 == 0 ) ) ) {
p t h r e a d mutex u n lo c k (& d ep o t1 l o c k ) ;
p t h r e a d mutex u n lo c k (& d ep o t2 l o c k ) ;
p t h r e a d _ c o n d _ w a i t (&disj u n c t _ i s _ t r u e , &disj u n c t _
lock);
p t h r e a d mutex lo c k (& d e p o t1 l o c k ) ;
p t h r e a d mutex lo c k (& d e p o t2 l o c k ) ;
};
i f ( T f a c t o r 1 > T f a c t o r 2 ) { / / читаем из более з а п о л
ненного склада
p t h r e a d mutex u n lo c k (& d ep o t2 l o c k ) ;
r e a d tu p l e ( & d e p o t 1 , & i n T u p l e 1 ) ; / / чтение кортежа
и з с к л а д а 1.
i f ( T f a c t o r 1 == 1) / / н и ть -п ос та вщ и к 1 п р о с т а и в а е т
p t h r e a d cond s i g n a l ( & n o t f u l l 1);
T f a c t o r 1 = f ( & d e p o t 1 ) ; / / п е р е с ч е т T- ф а к т о р а д л я
с к л а д а 1.
Глава 4. Выполнение запросов 79
p t h r e a d mutex u n lo c k (& d ep o t1 l o c k ) ;
}else{
p t h r e a d mutex u n lo c k (& d ep o t1 l o c k ) ;
r e a d tu p l e ( & d e p o t 2 , & i n T u p l e 2 ) ; / / чтение кортежа
и з с к л а д а 2.
i f ( T f a c t o r 2 == 1) / / н и т ь -п ос та вщ и к 2 п р о с т а и в а е т
p t h r e a d cond s i g n a l ( & n o t f u l l 2 ) ;
T f a c t o r 2 = f ( & d e p o t 2 ) ; / / п е р е с ч е т T- ф а к т о р а д л я
с к л а д а 2.
p t h r e a d mutex u n lo c k (& d ep o t2 l o c k ) ;
};
p t h r e a d mutex u n l o c k ( & d i s j u n c t l o c k ) ;
};
/ * - - Нить п о с т а в щ и к а 1 - - * /
put_tuple1(){
p t h r e a d mutex lo c k (& d e p o t1 l o c k ) ;
p t h r e a d mutex l o c k ( & d i s j u n c t l o c k ) ;
w h i l e ( T f a c t o r 1 == 1) { / / с к л а д 1 з а п о л н е н
p t h r e a d mutex u n l o c k ( & d i s j u n c t l o c k ) ;
p t h r e a d c o n d w a i t ( & n o t f u l l 1, &de pot 1 l o c k ) ;
p t h r e a d mutex l o c k ( & d i s j u n c t l o c k ) ;
};
w r i t e buf(&depot1, &outTuple1); / / запись кортежа в склад 1.
i f ( T f a c t o r 1 == 0) / / в с к л а д е 1 не было к о р т е ж е й
if(!disjunct){
p t h r e a d cond s i g n a l ( & n o t empty 1);
d isju n c t = true;
};
T _ f a c t o r 1 = f ( & d e p o t 1 ) ; / / п е р е с ч е т T- ф а кт ор а для с кл ад а 1.
p t h r e a d mutex u n lo c k (& d ep o t1 l o c k ) ;
p t h r e a d mutex u n l o c k ( & d i s j u n c t l o c k ) ;
/ * - - Нить п о с т а в щ и к а 2 - - * /
put_tuple2(){
p t h r e a d mutex lo c k (& d e p o t2 l o c k ) ;
80 Глава 4. Выполнение запросов
p t h r e a d mutex l o c k ( & d i s j u n c t l o c k ) ;
w h i l e ( T f a c t o r 2 == 1) { / / с к л а д 2 з а п о л н е н
p t h r e a d mutex u n l o c k ( & d i s j u n c t l o c k ) ;
p t h r e a d c o n d w a i t ( & n o t f u l l 2, &de pot 2 l o c k ) ;
p t h r e a d mutex l o c k ( & d i s j u n c t l o c k ) ;
};
w r i t e buf (&depot2, &outTuple2); / / запись кортежа в склад 2.
i f ( T f a c t o r 2 == 0) / / в с к л а д е 2 не было к о р т е ж е й
if(!disjunct){
p t h r e a d cond s i g n a l ( & n o t empty 2 ) ;
d isju n ct = true;
};
T f a c t o r 2 = f ( & d e p o t 2 ) ; / / п е р е с ч е т T- ф а кт ор а для с к л ад а 2.
p t h r e a d mutex u n lo c k (& d ep o t2 l o c k ) ;
p t h r e a d mutex u n l o c k ( & d i s j u n c t l o c k ) ;
};
Глава 5
Распределение данных
(5.1)
R П R j = 0 , при i ф j (5.2)
82 Глава 5. Распределение данных
(5.3)
(5.4)
Таблица 2
Допустимость фрагментации для некоторых реляционных пераций
т проекция да
а выбор да
8 удаление дубликатов нет
Y группирование нет
U объединение да
п пересечение нет
X прямое (декартово) произведение нет
соединение нет
Vr е R ( ф ( r ) = f (r. A) ). (5.6)
R = U R‘ и S = U S 1.
i=0 i=0
Следовательно,
(5.11)
к-1
RdS с У R dS (5.12)
i=0
также имеет место. Предположим противное, то есть существует
пара
(r,s ) ! Rd S (5.13)
такая, что
к-1
(r,s) г У R‘dS ‘. (5.14)
i=0
Из (5.13) следует
r.A = s.A. (5.15)
С другой стороны, из (5.14) следует, что y R(r) ф y s(s). Сопостав
ляя это с (5.9) п ол у ч аем /^ r.A) фf(s.A ). Но это воможно, только,
если r.A ф s.A. Получили противоречие с (5.15). Следовательно,
(5.12) имеет место. И з (5.11) и (5.12) следует (5.10).Предложение
доказано.
Пример 4. Пусть необходимо вы полнить естественное соеди
нение отнош ений R[A, B] и S[C, A], фрагментированных по k
п роцессорны м узлам м ногопроцессорной системы . Пусть R
фрагментировано с помощью атрибутной фрагметациий (A ,f), S
фрагментировано произвольным образом. В качестве операторов
пересы лки и здесь мы можем взять операторы (5.8) из примера
3. Однако утверждение 2 дает нам лучш ий вариант:
V ,(r) = f (5.16)
Vs (s) = I a(s.A).
В этом случае кортеж и отнош ения R пересы латься также не
будут, так как оно фрагм ентировано по атрибуту соединения.
Количество пересы лок кортеж ей отнош ения S не будет п р е
выш ать |S], так как отображение v s(s) = f(s .A ) является одно
значны м.
Глава 5. Распределение данных 89
н о е с о е д и н е н и е будет
п равильно вы числено
п ри вы полнении д ан н о
го параллельного плана.
Четвертый и пяты й опе
раторы exchange также имею т одинаковые ф ункции пересылки,
представленные доменной ф ункцией атрибута выш естоящ его
естественного соединения, что обеспечивает правильное в ы
полнение запроса в целом.
На самом деле, мы можем оптимизировать полученный парал
лельный план. Обратим внимание н а то, что функция пересылки
^ 2(t) = 0 совпадает с ф ункцией фрагментации отнош ения П. Это
означает, что кортеж и отнош ения П пересы латься не будут. Сле
довательно, мы можем удалить оператор exchange из плана
(а). По аналогичной причине мы можем удалить из плана (а)
оператор exchange в^ , перейдя к эквивалентному параллельному
плану, изображенному на рис. 25 (б).
Оператор exchange является составным оператором. Его струк
тура изображена н а рис. 26. Оператор exchange включает в себя
четыре оператора: gather, scatter, split и merge.
Оператор split — это бинарны й оператор, который осущест
вляет разбиение кортеж ей, поступаю щ их из входного потока
(ассоциируется с левым сыном), н а две группы: свои и чужие.
Свои кортеж и —это кортежи, которые должны быть обработа
ны н а данном процессорном узле. Эти кортеж и направляю тся в
выходной буфер (склад) оператора split. Чужие кортежи, то есть
кортежи, которые должны быть обработаны на процессорных
узлах, отличных от данного, помещ аю тся оператором split в вы
ходной буфер (склад) правого сына, в качестве которого фигу
рирует оператор scatter. Здесь выходной буфер (склад) оператора
Глава 5. Распределение данных 93
VA е A ((init( A) Ф fin( A)
P и D Ф 0, N * 0 (6.3)
! !
^ (init( A) = P a fin ( A) = M ) Y
VP e P VM e M 3E (A , A')e E ■M e N
v (in it( A')= P a fin ( A')= M )
V V
(6.4)
! у
!(in it( A) = D a fin ( A) = M ) Y
Y
VD e D VM e M 3E(A,A’)eE >M e N
' (in it( A')= D a fin ( A')= M )
)
(6.5)
! Y Y
! ( i n i t( A ) = M v i n i t ( A') = M) '
VM e M VE ( A , A ') , E (A , A' ) ^ ( E =E ) ^ (M e D и P )
\ ( i n i t ( A) = M v i n i t ( A') =M )
vv vv У) )
(6.6)
Теорема доказана.
С каждым DM-деревом I связывается функция трудоемкости
П : M (I) 0, которая определяет время, необходимое узлу для
обработки некоторой порции данных. В качестве такой порции
данных может фигурировать, например, кортеж. Семантика этой
ф ункции будет уточнена в разделе 6.4.
Определение 10. DM -деревья ! 1и I 2называю тся изоморфными,
если существуют взаимно однозначное отображение f множества
узлов M ( I 1) дерева ! 1на множество узлов M ( I 2) дерева I 2 и вза
им но однозначное отображение g множества ребер E (I1) дерева
! 1н а множество ребер E (I2) дерева I 2 такие, что:
(1) ребро Еинцидентно узлам М и М 'в дереве ! 1тогда и только
тогда, когда ребро g(E) инцидентно узлам f(M) и f(M') в
дереве I 2;
(2) узел M является корнем дерева ! 1 тогда и только тогда,
когда узел f(M) является корнем дерева I 2;
(3) P е P (% ) о f(P ) е P (Т2) ;
(4) D е D (Т г) о f(D ) е D (Т 2) ;
(6) n (f(M )) = n (M ).
Упорядоченную пару отображений q = (f, g) будем называть
изоморфизмом DM -дерева ! 1н а DM -дерево I 2.
Необходимость условия (2) в определении изом орфизм а сле
дует из примера, показанного н а рис. 30. М ы здесь предполагаем,
что функция трудоемкости для всех узлов выдает значение равное
1. Отображения f и g удовлетворяют всем требованиям изом ор
физма, кроме условия (2). Однако мы не можем признать q = (f,g)
изом орфизм ом DM -дерева A н а DM -дерево B, так как корневой
узел N 1Aдерева A отображается в узел N 1B, н е являю щ ийся кор
невы м узлом в дереве B: f (N A) = N Bф N 2b.
Глава 6. Модель параллельной системы баз данных 101
О тметим, что м о
дель аппаратной плат
формы параллельной
системы баз данных представляется в виде регулярного DM-дерева
с точностью до изоморфизма.
Под уровнем поддерева дерева I мы будем понимать уровень
корня этого поддерева в дереве I .
Два поддерева одного уровня называю тся смежными, если их
корни являю тся братьями, то есть в дереве существует узел, я в
ляю щ ийся общ им родителем по отношению к корневы м узлам
данных поддеревьев.
Определение 11. Будем называть регулярное DM-дерево I вы
соты H > 2 симметричным, если выполняю тся следующие два
условия:
1) любые два смежных поддерева уровня l (0 < l < H) имею т
одинаковую высоту и являю тся изоморфны ми;
2) каждый узел уровня H —1 имеет в точности двух сыновей,
один из которых является процессорны м, а другой д ис
ковы м модулем.
С имметричны е DM -деревья моделируют достаточно ш и р о
к и й класс реальны х м ногопроцессорны х систем и являю тся
м атематическим фундаментом для описания стратегии балан
сировки загрузки, описы ваем ой в главе 7. Узлы уровня H — 1
в симм етричном DM -дереве представляю т собой абстрактную
м одель S M P -си стем в том см ы сле, что в к о н тек сте м н о го
процессорны х иерархий все процессоры SM P-систем ы могут
рассм атриваться как один «мегапроцессор», а все диски —как
102 Глава 6. Модель параллельной системы баз данных
h ( T ) = h (T m ) +1 < log 2 ( P ) + 1 .
Глава 6. Модель параллельной системы баз данных 103
Теорема доказана.
Степенью дерева будем называть степень его корня. В симм е
тричном дереве T все поддеревья уровня l (0 < l < h(2)) имею т
одинаковую степень, которую мы будем обозначать как Sl и н а
зывать степенью уровня l.
Д ля п рои зволь
ного M e M введем
следующие обозна
чения: F(M) —роди
тельский модуль узла M, T(M) —поддерево с корнем в верш ине
M.
Процессорный модуль P е P может инициировать операции
чтения и записи пакетов. Определим их семантику следующим
образом.
Операция чтения. Пусть процессорному модулю P требуется
прочитать пакет E с диска D е D . Если процессор P ранее инициа
лизировал srеще незаверш енных операций чтения, то он перево
дится в состояние ожидания. Если количество незаверш енных
операций чтения меньше s , то в очередь диска D помещ ается
пакет E с адресом получателя a(E) = P и адресом отправителя
P(E) = D. Н а рис. 32 представлен псевдокод данного алгоритма.
Здесь r(P) —количество незаверш енных операций чтения про
цессора P, sr —максимальное допустимое число незаверш енных
операций чтения.
Операция записи. Пусть процессорному модулю P требуется за
писать пакет E н а диск D е D . Н а рис. 33 представлен псевдокод
алгори тм а и н и ц и
ирую щ его запись.
Здесь w(P) — коли
чество незаверш ен
н ы х о п е р а ц и й за-
I n (mi ) =
tN = n ( N ) f N(mN), VN 6 N .
Общее время работы системы, затраченное на обработку смеси
транзакций в течении k тактов, вычисляется по формуле
ф р = U (р! и ю ) .
i=1
П ри этом, п ри запуске новой транзакции н а процессоре P ,
в множество Ф^ динамически добавляются читающие и пишущие
процессы, представляющ ие данную транзакцию . Если какой-
либо процесс завершается, то он удаляется из множества Ф г
Рассмотрим, как в модели организуется вы полнение смеси
транзакций Ф^ н а некотором процессоре P. При этом мы предпо
лагаем, что процессор P не находится в состоянии ожидания (см.
§ 6.3). На каждом такте работы эмулятора процессор P должен
инициализировать одну операцию обмена с дисками. В соот
ветствии с этим, процессор должен выбрать некоторы й процесс
х е Ф и произвести операцию чтения с диска или записи на
диск, ассоциированны й с х н а текущ ем шаге. М ы будем н а
зывать такой процесс активным . Все процессы и з множества Ф
организуются в список. Вводится указатель н а текущ ий элемент
списка (его начальная позиция может быть произвольной). Для
определения активного процесса используется алгоритм, и зо
браженный н а рис. 36. Здесь р —множество всех процессорных
модулей DM-дерева; s(x) —общее количество шагов процесса х;
n(x,i) — количество обращ ений к диску, которые осталось вы
полнить процессу х на шаге i; p(x,i) — вероятность обращ ения
процесса х к диску при вы полнении i-го шага; g —функция сра
батывания, вычисляемая следующим образом. Для каждого шага
i процесса х е Ф известна вероятность p i обращ ения процесса
Глава 6. Модель параллельной системы баз данных 111
- = ( (1 - ц ) | R | (1 - ц ) .1
ai [ N 2- N ’ (N - 1)’J J ’
4 = (0’0’ Л-
ь0
bJ = {0,0,0},
ь- ( (1 - ц ) | S | (1 - ц ) .1
b2 [ N 2 - N ’ (N - 1),J J '
Аналогичным образом формируются транзакции, вы полняе
мые на остальных процессорных узлах.
Глава 7
Балансировка загрузки
N (F j = T (j j ) - T(F j ) + 1 .
для всех 0 < х < H —2. Здесь A(Mx) обозначает уровень поддерева
Mx. Д ля любого симметричного дерева T существует только одна
такая последовательность. Действительно, предположим против
ное, то есть, что существуют две различные последовательности
{М0,...,М Н_2} и {М'0,...,М 'Н2}, такие, что:
Га (M x ) = x и Га.(MX) = x
U 6 D ( M x) { d ; 6 D ( M'x)
И , d j } с D ( M x) .
Мы полагаем
Р( i j ) = Ц(х). (7.7)
T (F / ) = ц(! (M ) - 1 ) T ( F ) + O ( L ) ,
Отсюда получаем
T ( F/ ) = T ( F ) - ( 1 - ц ( Х ( M ) - 1 ) } S ( F ) •L + O (L ) .
T(Fo)
T (F j )= T (F )-(1 - ц ( Ц М ) - 1 ) ) L + O(L )
L( Fo)
T (Fi)
= T(F;) - ( 1 - ц ( Ц М ) - 1 ) ) ;1 •L + O (L)
120 Глава 7. Балансировка загрузки
= T ( F ) - ( 1 - ц ( М М ) - 1 ))T (F ) + 0 ( L )
= ^ ( Ц M ) -1 )T ( Fi) + 0 ( L ).
Теорема доказана.
Заметим, что размер сегмента L является параметром реплика
ц и и и не связан с фрагментацией базы данных. Таким образом,
мы можем считать, что L является константой, значение которой
мало относительно общего размера базы данных, и им можно
пренебречь.
О ценка суммарного размера всех реплик фрагмента может
быть получена с помощ ью следующей теоремы.
Теорема 6. Пусть T —симметричное DM-дерево высоты H > 2.
Пусть фрагмент F. располагается на диске d е D (T). Обозначим
степень уровня l дерева T как 8Г Обозначим R( F ) = ^ T( F/ ) —
j *i
суммарное количество кортежей во всех репликах фрагмента Fi.
Тогда
R( F ) = ( T ( F V ( 0 ) + 0 (L ))- ( s о - 1) (710)
= T ( F ) ц ( 0 )(5 о - 1 ) + 0 ( L )
T(F / ) = p ( 0 )T ( F ) + 0 ( L ) . (7.13)
R 0 ( F ) = T ( F ) Z V ( /) ( 8 , - 1 ) П 5k + 0 ( L ) . (7.15)
/=1 k=l+1
= T ( F ) X ИQ)(5 - - 1 ) П 5 k + 10 (L )■
/= 0 k = /+ 1
Теорема доказана.
122 Глава 7. Балансировка загрузки
x(F / ) = п (X (М ) - 1 ).ц ( I (М ) - 1 ) T (F ) + 0 ( п о ) ,
x (F / ) = n (Х (И ) - 1)T( F / ) + О (п (Х (И ) - 1 ) ) . (7.17)
т( F i ) = n (1(И ) - 1 ) T( F / ) + О( п о ) . (7.18)
Теорема доказана.
Оценка трудоемкости покортежного ф ормирования всех р е
плик фрагмента без учета помех может быть получена с помощью
следующей теоремы.
Теорема 8. Пусть T —правильно нагруж енное симметричное
DM -дерево вы соты H. Пусть ф рагм ент F. р асп олагается н а
диске D. ! D (T). О бозначим степень уровня l дерева T как 8Г
О бозначим t( F ) = ^ x ( F J) — сумм арную трудоем кость п о -
т( F/ ) = n ( 0 ) - р ( 0 )T (F / )+ О (по) .
T (F ) = z 4 ( F ) . (7.21)
х=о
Без ограничения общности мы можем считать, что D . е D (M ) и
i ф 0. Тогда в силу симметричности дерева T из (7.21) получаем
T (F ) = т , F ) + (5о- \ K ( F ) . (7.22)
т( F / ) = Л(0)Ц (0 )T (F ) + О ( п 0) . (7.23)
т ( F ) = т ( f ) Z n (i ) p ( i )(5, - 1 ) П « к + о ( п 0) . (7.25)
l=1 к=1+1
+о(п0 ) = Т (F ) X n ( l ) ( « , - 1 ) П « к + О (п0).
l= 0 к=l+1
Теорема доказана.
Определим рекурсивно нормальную функцию зеркалирования
р(/) следующим образом:
1 ;
1) для l = H —2: р( H - 2)
=p ( H - 2 )(5 h-2 - 1 ) ;
n ( l + !)(8l+1 - ! ) p ( l + ! )
2) для 0 < l < H —2: p(l) =
n ( l )(Sl - 1)Sl+1
Докаж ем следующую лемму.
Лемма 1. Нормальную функцию зеркалирования можно пред
ставить в виде:
1 (7.26)
p(l) =
n ( l ) ( « - 1 ) П H=-+1«к
К Н - 2) = ' ------- р т - ,
п ( Н _ 2 )(5 Я_2 - 1) 1
что согласуется с определением норм альной ф ункции зеркали
рования.
Пусть l < H —2. Тогда, по определению, нормальная функция
зеркалирования будет иметь вид:
t (R ) ~ kT(F),
где k —некоторая константа, не зависящ ая от F.
Д о к а з а т е л ь с т в о . Пусть база данных состоит из m ф раг
ментов. Пусть t (R ) = ^ m 1T(Fi) — суммарная трудоемкость по-
кортежного ф ормирования всех реплик без учета помех. В соот
ветствии с теоремой 8, имеем:
т( F ) =т ( F ) " f ( уб ^ П ^ 6 П 6 *+ 0 (п о) =
=т(F ')£ (l
i=on(1)
)(
П6i
6('-)((
6)П
)П (s)-+
=i16
(6*кП=l+(6•+0(hо)=т !0
1= т
= (H -2)т(F)+0(no).
Таким образом:
t ( r ) = х : ; (к н - 2)т (f ) + ° ( ч о ) ] = ( н - 2) х : ; ' т ( т )+
+ m O ( n 0) = ( H - 2 ) • т ( Е ) + m 0 ( n 0) ~ к т(Е ).
где k не зависит от F . Т е о р е м а д о к а з а н а .
Д анная теорема показывает, что при использовании норм аль
ной ф ункции зеркалирования трудоемкость обновления реплик
в правильно нагруженной симметричной многопроцессорной
иерархической системе пропорциональна размеру обновляемой
части базы данных при условии, что соединительная сеть обла
дает достаточной пропускной способностью.
128 Глава 7. Балансировка загрузки
Y(Q ) = a. sgn (m a x ( . ) - Я ) i . ( M ) ) ^ gt .
i=1
Буферизация
в параллельных СУБД
д
Будущее - Прошлое
-3 -2 -1 : 1 2 3 4 5 6 7 8 9 10 11 12 13 Ы 15 16 17 18 19 26 21
* 5 * 1* Н И
V.___ .. А 1 г ~и п ШШШ
УУ
4 11*X h Ы lh h
$
В)Пф*>1гмн1^,1яр-
Y ~Y~
Д> Псрчод титулкр* II) Перма лопулкр- А) Периодионулчр-
i*tcriiL'ipciiiim. 4.5,й iilv ih сгрдоии 1,2.3 nocmciранни4,5,6 IKV11I CrpjlIHI! 1.2,3
§ 8.6. Алгоритм L F U -2
к1.., к_,
i2’ . . . ’, к.i (8.6)
158 Глава 8. Буферизация в параллельных СУБД
Здесь к-j = 5irj для всех j, 1 < j < m ( 5.irj —символ Кронекера [7]:
F ( - ) = S j •
j=
Пусть задано некоторое целое h , 1 < h < m . Определим
F f ( z ) = Fi| ( z )
R LFU-1
l fu -1 ( i ) = F [0]( 1 ) + F [1]( 1 ) , (8.9)
1’ г2’
г,, . , . . . ’, гm.
р. = т Н* . (8' 12)
1 1/ И
Pi = 7l H ( 1)
) _ nl-r -1 1 m в 2к 1
И,
(Г
Z(r) + ■ + - -> +0 r+2m+1
(8.13)
1- r 2nr k=1 2kn r+2k~11 2k -1 П J
nl-r -1 1
и Пг) =Z(r ) + + 0 (8.14)
1- r V J
1
Р, ~- (8.15)
0 N 1-0 -1 ^
l Z(0) +
1- 0
lim Rlfu-o(i) = P i ■
m
162 Глава 8. Буферизация в параллельных СУБД
G im ( Z ) = X Я ш к*к . ( 8 .2 0 )
к
Отсюда получаем
Gi 1 ( z ) = Я 10 + q 11 Z = 1 - Pi + Pi z = Pi ( z - 1) + 1 . ( 8 .2 1 )
Gim(z) = ( pi (z -1 ) +1)Г = p Г (z + (1 - pi ) / Pl /
(8.24)
1
(8.29)
2 п т ■P i (1 - P i)
Д анная ф ункция
определяет меру, свя
зывающую значение
параметра m с эф ф ек
тивностью алгоритма
LFU-0. Действитель
но, чем меньш е зна
чение меры M , тем точнее может быть определена величина p .
по формуле
p. = k/m, (8.34)
Обозначим
(8.36)
(8.37)
(8.38)
= V im (Х ) • ф 2 (Х ) + V im ( Х ) • Ф' (Х У
Из (8.31) находим
Глава 8. Буферизация в параллельных СУБД 167
V-m(1) = 1. (8.40)
Используя (8.36), вычисляем
Pi -1/2 (8.41)
Фт (1) =
1 -Pi
Используя (8.37), с учетом (8.40) и (8.41), имеем
Pi - У2 (8.42)
vm(1) = Vm(1)' Фт (1) = ■
1- Pi
Используя (8.38), вычисляем
ф (1) = m
p l - P‘ - mP‘ + P i+ V2 (8.43)
(1 - Pi )2
Используя (8.39), с учетом (8.40), (8.41), (8.42) и (8.43), находим
mPi(1 - Pi) - 3/ 4 (8.44)
vm (1) = Фи(1) + ФС, (1) = - -
(1 - P i ) 2
х2
M(m) = j v im(x)dx. (8.46)
x
Д ан н ая ф у н кц и я м ож ет служить приближенной мерой для
определения величины т . Действительно, чем меньше значение
интеграла (8.46), тем точнее будет определяться вероятность
вы борки страницы по числу ее вхождений в трассу длины т.
Таким образом, мы можем задать некоторое ф иксированное
положительное число E и выбирать значение т как наименьш ее
натуральное число такое, что
m P i (1 -Pi) - 3/4 ^ V2 - p i .
2(1 - Pi)2 1- P i
V queuel \ц и а н е 2
-- лГ----- л
> Г2» ' * 4 ^H+h 'fr+2i 4 r 4 i ^2*ft* r 4 * <* ^Jtt* f ч r s ^iW
L___________________________________________ I
Squeue
Рис. 52. Схема работы очередей Squeue, Vqueuel и Vqueue2 (мень
шее значение индекса элемента трассы соответствует более поздне
му по времени обращению)
A s = Z k (r) - v 2 ( r ) . ( 8 .5 0 )
r
h ( r ) - v2(r )| (8.51)
л = Е
r A,
Leonid Sokolinsky
Parallel Database
Systems
Manual
Параллельные системы
баз данных
Редактор М. С. Кутасова
Оформление переплета
П. А. Брызгалов, Ю. Н. Симоненко
Корректор М. С.Кутасова
Верстка Е. Н. Берлова
Подписано в печать 28.11.2012
Формат 60x 84/16. Гарнитура Times.
Офсетная печать. Бумага офсетная № 1.
Усл. печ. л. 10,7. Тираж 2 000 экз.
Изд. № 9913. Заказ №
Ордена «Знак Почета»
Издательство Московского университета
125009, Москва, ул. Б. Никитская 5/7.
Тел.: (495) 629-50-91. Факс: (495) 697-66-71
(495) 939-34-93 (отдел реализации)
E-mail: secretary-msu-press@yandex.ru
Сайт Издательства М ГУ:
www.msu.ru/depts/MSUPubl2005
Интернет-магазин: http://msupublishing.ru
Адрес отдела реализации:
Москва, ул. Хохлова, 11 (Воробьевы горы, МГУ).
E-mail: izd-mgu@yandex.ru Тел.: (495) 939-34-93
Отпечатано в ППП «Типография „Наука“»
121099, Москва, Шубинский пер. 6
Цель учебного пособия состоит в изложении основ технологий параллельных
систем баз данных. Особое внимание уделяется вопросам реализации СУБД для
кластерных систем. Дается классификация известных форм параллельной обра
ботки транзакций. Приводится сравнительный анализ различных архитектур па
раллельных систем баз данных. Рассматриваются возможные технологические
подходы к организации параллельной обработки запросов. Обсуждается итераци
онная модель, синхронный и асинхронный конвейеры. Излагаются методы фраг
ментации данных и способы организации межпроцессорных обменов. Предлагается
подход к автоматическому преобразованию последовательного плана выполнения
запроса в параллельный. Большое внимание уделяется вопросам моделирования
параллельных систем баз данных и организации эффективной буферизации в ус
ловиях использования фрагментного параллелизма.
Книга ориентирована на студентов, аспирантов и научных работников, специа
лизирующихся в области разработки технологий параллельных систем баз данных
и их применения для обработки сверхбольших объемов данных на современных
многоядерных и многопроцессорных системах с кластерной архитектурой.
ISBN 978-5-211-064В2-9
Издательство
М о сковского
университета
9 785211 064829