27
Хакасский государственный университет им. Н.Ф. Катанова Структуры и алгоритмы обработки данных Лекция: Работа с внешней памятью (файлами). Николай Гребенщиков, www.grebenshikov.ru

Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

Хакасский государственный университет им. Н.Ф. Катанова

Структуры и алгоритмы обработки данных

Лекция: Работа с внешней памятью

(файлами).

Николай Гребенщиков, www.grebenshikov.ru

Page 2: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

Модель внешних вычислений

• Внешняя память разделяется на блоки - страницы.

• Время доступа к внешней памяти. ОЗУ на 5 порядковбыстрее.

• Буфер в основной памяти.

1

Page 3: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

Обработка файлов

• Внешняя сортировка

• Хранение данных ориентированное на поиск

2

Page 4: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

Сортировка слиянием

Идея: организовать файл в виде постепенно унивеличиваю-щихся серий.

Серия - 〈r1, . . . , rk〉, где ri ≤ ri+1, 1 ≤ i ≤ k

Файл 〈r1, . . . , rm〉 делится на серии длинной k, если для i ≥ 0,таких что k · i ≤ m ⇒

⟨rk(i−1)+1, rk(i−1)+2, . . . , rk·i

⟩является

серией

3

Page 5: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

Файл с сериями длинной 3

2 5 7 78 98 101 2 3 4 3 67

4

Page 6: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

Работа сортировки слиянием

5

Page 7: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

merge(F1, F2, G1, G2, k)

1 outswitch← true � первая серия идет в G12 while not eof(F1) or not eof(F2)

3 do used[1]← 0; used[2]← 0; fin[1]← false; fin[2]← false;

4 cur[1]← get(1, f1, f2); cur[2]← get(2, f1, f2);

5 while not fin[1] or not fin[2]

6 do if fin[1]

7 then winner ← 2

8 else if fin[2]

9 then winner ← 1

10 else if cur[1].key < cur[2].key

11 else winner ← 2

12 if outswitch

13 then write(g1, cur[winner])

14 else write(g2, cur[winner])

15 cur[winner] = getRecord(winner)

16 outswitch = not outswitch

6

Page 8: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

merge-sort(F, N)

1 k ← 1; switch← 0

2 while k < 2 ·N3 do if switch = 0

4 then F1← F [0, 0]; F2← F [0, 1];

5 G1← F [1, 0]; G2← F [1, 1];

6 else F1← F [1, 0]; F2← F [1, 1];

7 G1← F [0, 0]; G2← F [0, 1];

8 merge(F1, F2, G1, G2, k)

9 k ← k · 2

7

Page 9: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

Анализ сортировки слиянием

C(N) = M(N)

Tmerge(N) = Θ(N)

Tmerge−sort(N) = Θ(N) ·Θ(logN) = Θ(N · logN)

8

Page 10: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

На семинар

• Многоканальное слияние

• Многофазное слияние

• Использование буферов при слиянии. Схемы с 6-ю и с4-мя буферами.

9

Page 11: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

Хранение данных

• Простой файл

• Хэшированный файл

• Индексированный файл:

– разреженный индекс для отсортированного файла

– плотный индекс для неотсортированного файла

– вторичный индекс

– деревья поиска

10

Page 12: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

B-дерево - сбалансироанное дерево поиска, созданное спе-циально для эффективной работы с вторичной памятью снепосредственный доступом (например, дисковой памятью).

При анализе будем рассматривать:

• количество обращений к диску

• время вычислений

11

Page 13: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

B-дерево

12

Page 14: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

B-дерево T есть дерево с корнем root[T ], обладающее сле-дующими свойствами:

• Каждый узел x содержит поля: n[x] - количество ключейв узле в настойщий момент;

⟨key1[x] ≤ . . . ≤ keyn[x][x]

⟩; ло-

гическое значение leaf [x] равное true, если x - лист.

•⟨c1[x], c2[x], . . . , cn[x]+1[x]

⟩указатели на дочерние узлы.

• все листья расположены на одной глубине h.

• t ≥ 2 - минимальная степень B-дерева. Для всех внутрен-них узлов кроме корневого n[x] ≥ t−1. Для всех внутрен-них узлов n[x] ≤ 2t− 1

13

Page 15: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

Высота B-дерева T с n ≥ 1 узлами и минимальной стпеньюt ≥ 2 не превышает logt(n + 1)/2.

n ≥ 1 + (t− 1)h∑

i=1

2ti−1 = 1 + 2(t− 1)

(th − 1

t− 1

)= 2th − 1⇒

th ≥ (n + 1)/2⇒

h ≥ logt(n + 1)/2

14

Page 16: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

Поиск по B-дереву

B Tree Search(x, k)

1 i← 1

2 while i ≤ n[x] и k > keyi[x]

3 do i← i + 1

4 if i ≤ n[x] и k = keyi[x]

5 then return(x, i)

6 if leaf [x]

7 then returnNIL

8 else Disk Read(ci[x])

9 return B Tree Search(ci[x], k)

15

Page 17: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

Анализ времени поиска

Количество обращений к диску равно O(h) = O(logtn)

Время обработки: n[x] < 2t⇒ T (n) = O(th) = O(t · logtn)

16

Page 18: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

Создание пустого B-дерева

B Tree Create(T )

1 x← Allocate Node()2 leaf [x]← true

3 n[x]← 0

4 Disk Write(x)5 root[T ]← x

OPdisk = O(1) и T (n) = O(1)

17

Page 19: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

Вставка ключа в B-дерево

18

Page 20: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

Разбиение узла в B-дереве

19

Page 21: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

Разбиение корня в B-дереве

20

Page 22: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

Разбиение узла в B-дереве

21

Page 23: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

Вставка в B-дерево

22

Page 24: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

Вставка в B-дерево

23

Page 25: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

Анализ вставки в B-дерево

Разбиение: OPdisk = O(1) и T (n) = O(t)

Вставка: OPdisk = O(h) = O(logtn) и T (n) = O(th) = O(t · logtn)

24

Page 26: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

На семинар

• Удаление из B-дерева.

• B+ деревья.

• Применение B-деревьев в файловых системах.

25

Page 27: Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритмы обработки данных"

Список литературы

• Ахо А., Хопкрофт Д., Ульман Д. Структуры данных иалгоритмы. - М. : Издательский дом “Вильямс”, 2000.сс.311-338.

• Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгорит-мы: построение и анализ, 2-е издание. - М. : Издатель-ский дом “Вильямс”, 2007. сс.515-536.

• http://en.wikipedia.org/wiki/B-tree

• http://en.wikipedia.org/wiki/B%2B tree

26