Notes03r

advertisement
Принципы построения и работы
баз данных
Тема 03: Организация диска
Принципы
построения БД
Тема 3
1
Вопросы на сегодня
• Как разместить данные на диске
• Как переносить их в опер.память
Принципы
построения БД
Тема 3
2
Какие элементы данных мы хотим
хранить?
•
•
•
•
Зарплата
Имя
Дата
Фото
Что мы можем использовать: Байты
8
бит
Принципы
построения БД
Тема 3
3
Для представления:
• Integer (short): 2 байта, т.е. 35 будет храниться в
виде
00000000
00100011
• Real, с плавающей точкой
n бит для мантиссы, m – для экспоненты.
• Char – символьные данные, имеется несколько
схем кодирования, наиболее популярная - ascii
Примеры:
A: 1000001
a: 1100001
5: 0110101
LF: 0001010
Принципы
построения БД
65(дес.)
97
53
10
Тема 3
4
Для представления:
• Boolean
т.е., TRUE
FALSE
1111 1111
0000 0000
• специальные для приложения типы
т.е., RED  1
GREEN  3
BLUE  2
YELLOW  4 …
Можно ли использовать менее 1 байта на значение?
Да, но только в исключительных случаях
Принципы
построения БД
Тема 3
5
Для представления:
• Даты
- Integer, число дней с 1 января 1900
- 8 символов, YYYYMMDD
- 7 символов, YYYYDDD
• Time
- Integer, число секунд с полуночи
- 8 символлов, HHMMSSFF
Принципы
построения БД
Тема 3
6
Для представления:
• Строка символов
- Заканчивающаяся 0-символом
- С явно указанной длиной
c
a
t
3 c
a
t
- Фиксированной длины
• Набор битов
Длина
Принципы
построения БД
Биты
Тема 3
7
Ключевой момент
• Элементы фиксированной длины
• Элементы переменной длины
- обычно с заданной длиной в начале
• Тип элемента:
- определяет как интерпретировать
элемент (плюс длина, если фикс.)
Принципы
построения БД
Тема 3
8
Обзор
Элементы данных
Записи
Блоки
Файлы
Опер.память
Принципы
построения БД
Тема 3
9
Запись – множество логически связанных
элементов данных (полей) об одном объекте
Например, запись служащего:
поле имени,
поле зарплаты,
поле даты найма на работу, ...
Типы записей:
• Главные альтернативы:
– фиксированный или переменный формат
– фиксированная или переменная длина
Принципы
построения БД
Тема 3
10
Фиксированный формат
Схема БД (не запись) следующую информацию
- кол-во полей
- тип каждого поля
- номер в записи
- смысл каждого поля
Принципы
построения БД
Тема 3
11
Пример: Фиксир. формат и длина
Запись служащего
(1) Е.номер, 2 байта, целое
(2) E.имя, 10 байтов, символы
(3) Е.отдел, 2 байта, код
55 Смит
02
83 Джонс
01
Принципы
построения БД
Тема 3
Схема
Записи
12
Пример: Перем. формат и длина
2 5 I
46 4 S 4
Номер поля
Код ном.служ
Целый тип
Код имени сл.
Строковый тип
Длина строки
• Сама запись содержит формат
Ф о р д
Коды полей могут быть строковыми
Принципы
построения БД
Тема 3
13
Перем. формат полезен в случаях
• “мало заполненных” записей
• повторяющихся полей
• изменяющихся форматов
Могут быть потери при хранении
Пример: Запись перем. формата с повтор. полями
Служащий  один или более  дети
3
Имя: Фред Ребенок: Салли Ребенок : Том
Принципы
построения БД
Тема 3
14
Замечание: Повторяющиеся поля не обязательно подразумевают
переменный формат или записи переменной длины
Джон
Парус
Шахматы
--
• Можно выделить место под максимальное количество полей,
если не испльзуется – NULL
• Возможны несколько вариантов между фиксированным и
переменным форматами:
Пример 1. Запись включает свой тип.
5
27
....
Тип записи
(может ссылаться
на схему БД)
Принципы
построения БД
Длина записи
Тема 3
15
Заголовок записи – данные в начале записи,
описывающие саму запись
Может содержать: тип, длину, дату последней
модификации и др.
Пример 2. Гибридный формат (одна часть записи –
фиксирована, другая – переменная). Например, все
служащие имеют таб.номер, имя, отдел, остальная
информация может быть различной
25 Смит О.игрушек 2 Хобби: шахматы На пенсии
Кол-во перем.полей
Принципы
построения БД
Тема 3
16
Возможно много вариантов и во внутренней
организации записи
длина поля
*
3 10
*
5
F1
*
12
F2
F3
Общая длина
3 32 5 15 20
0
1
2
3
4
F1
F2
5
15
F3
20
Смещения для
начала полей
Принципы
построения БД
Тема 3
17
Вопросы:
Мы видели примеры для
* фиксированного формата и длины
* переменного формата и длины
(a) Имеет ли смысл фиксированный формат и
переменная длина?
(б) Имеет ли смысл переменный формат и
фиксированная длина?
(в) Выгодно ли сжатие информации (внутри записи или
повторное ее использование между записями)
(г) Необходимо ли шифрование
Принципы
построения БД
Тема 3
18
Размещение записей в блоках
Блоки фикс.
длины
блоки
...
Пока один файл
файл
Принципы
построения БД
Тема 3
19
Варианты размещение записей в блоках
(1) Записи с разделителями
(2) Занимающие несколько блоков (с продолжением)
(3) Смешивание в блоке записей различных типов
(4) Расщепленные записи
(5) Упорядочение
(6) Косвенная адресация
Принципы
построения БД
Тема 3
20
(1) Записи с разделителями
блок
R1
R2
R3
(а) Нет необходимости в разделителях поскольку
записи - фиксированной длины
(б) Использование специального маркера
(в) Указание длины (или смещения)
- внутри каждой записи
- в заголовке блока
Принципы
построения БД
Тема 3
21
(2) Записи с продолжением
• Записи без продолжения - должны быть в
пределах одного блока
block 1
R1
block 2
R2
R3
R4 R5
...
• Записи с продолжением
block 1
R1
Принципы
построения БД
block 2
R2
R3
(a)
R3
R4
(b)
Тема 3
R5
...R7
R6 (a)
22
Для записи с продолжением
R1
R2
R3
(a)
R3
R4
(b)
R5
R7
R6 (a)
необходим
необходим
признак частичной
записи и ссылка
на продолжение
признак продолжения
(+ откуда?)
Принципы
построения БД
Тема 3
23
Что лучше?
• Записи без продолжения гораздо проще но могут
терять много свободного пространства
• Записи с продолжением необходимы, если размер
записи больше размера блока
Пример. 1000000 записей длины 2050 байт,
длина блока – 4096 байт. Для хранения
нужно ~ 4х109 байт, из готорых половина не
используется.
Принципы
построения БД
Тема 3
24
(3) Смешивание записей различных
типов
• Записи о служащих и отделах в одном блоке
EMP
e1 DEPT d1 DEPT d2
Для чего нужно смешивание - для кластеризации.
Записи, часто требуемые вместе, должны, повозможности, находиться в одном блоке
Компромисс – не сешивать, но хранить на одном
цилиндре
Принципы
построения БД
Тема 3
25
Пример.
Q1: select A#, C_NAME, C_CITY, …
from DEPOSIT, CUSTOMER
where DEPOSIT.C_NAME = CUSTOMER.C.NAME
CUSTOMER,NAME=SMITH
DEPOSIT,NAME=SMITH
DEPOSIT,NAME=SMITH
Если Q1 встречается часто, кластеризация дает
эффект, но если Q2: select * from CUSTOMER
встречается более часто, то эффект от
кластеризации - отрицательный
Принципы
построения БД
Тема 3
26
(4) Расщепленные записи
Типично для
гибридного
формата
Принципы
построения БД
Фиксированные части в одном блоке
Переменные части –
в другом блоке
Тема 3
27
Блок с фикс.записями
Блок с перем.записями
R1 (a)
R1 (b)
R2 (a)
R2 (b)
Блок с фикс.
записями
R2 (c)
Вопрос: Какова разница между расщепленными записями и
присто использованием двух разных типов записей?
Принципы
построения БД
Тема 3
28
(5) Упорядочение
• Размещение записей в файле (и блоке) в порядке
некоторого ключевого значения (поля)
• Для чего используется? Обычно – для чтения
записей в нужном порядке (например, для
соединения-слияния, обсуждаемого позже
Принципы
построения БД
Тема 3
29
Варианты упорядочения
(a) Следующая запись физически следует за
предыдущей
След. (R1)...
R1
(б) Связанный список
R1
(в) Область
переполнения
Принципы
построения БД
След. (R1)
Заголовок
R1
R2
R3
R4
R5
Тема 3
R2.1
R1.3
R4.7
30
(6) Косвенная адресация
• Как можно идентифицировать запись?
Rx
Много вариантов между:
Прямой (физической)
Принципы
построения БД
Косвенной
Тема 3
31
Чисто физическая
Напр. адрес
записи или =
ID (номер)
Принципы
построения БД
Номер устройства
Номер цилиндра
Номер дорожки
Номер блока
Смещение в блоке
Тема 3
Блок
32
Полностью косвенная
Например, ID записи – произвольная строка битов
таблица
rec ID
r
адрес
Rec ID
Принципы
построения БД
Физич.
адрес
Тема 3
a
33
Баланс между
Гибкостью в
перемещении записей
(для удолений, вставок)
Ценой косвенной
адресации
Существует множество вариантов между
физической и косвенной адресацией
Принципы
построения БД
Тема 3
34
Пример 1. Косвенная адресация в блоке
Заголовок
блок
свободное
пространство
R3
R4
R1
Принципы
построения БД
R2
Тема 3
35
Заголовок блока – данные в начале
блока, описывающие данный блок
Может содержать:
- ID файла(или отношения)
- ID данного блока
- Оглавление имеющихся записей
- Указатель на свободное пространство
- Тип блока (например, «содержит записи 4 типа»;
блок переполнения, и т.д. …)
- Указатель на другие «подобные» блоки
- Дата создания/изменения ...
Принципы
построения БД
Тема 3
36
Пример 2 Использование логического
номера блока, понимаемого файлово
системой
ID записи
ID файла,
Номер блока
Принципы
построения БД
ID файла
Номер блока
Номер заиси или смещение
Таблица
файл.сист.
Тема 3
Физический
номер блока
37
Таблица файловой системы может быть
«полу-физической».
Файл F1: физический адрес первого блока
таблица дефектных блоков:
B57  XXX
B107  YYY
Остальные физ.адреса блоков могут быть
вычислены по формуле ...
Num. Blocks: 20
Start Block: 1000
Block Size: 100
Bad Blocks:
3  20,000
7  15,000
Принципы
построения БД
Каков адрес 2 блока?
Каков адрес 3 блока?
Тема 3
38
Другие вопросы
(1) Удаление/Вставка
(2) Управление буферами
(3) Сравнение различных схем
Принципы
построения БД
Тема 3
39
Удаление
Блок
Rx
Варианты:
(a) Немедленно освободить занимаемое пространство
(б) Пометить запись как удаленную
– Может потребоваться цепочка удаленных записей
(для повторного использования)
– Нужен способ пометки:
• специальные символы
• удаленное поле
• в таблице
Принципы
построения БД
Тема 3
40
Как обычно, необходим баланс
между затратами и результатами...
• Насколько дорого перемещение другой
действительой записи в освобождающееся
пространство?
• Как много пространства теряется?
– например, удаленные записи, удаленные
поляу, цепочки указателей на свободные
участки в блоке,...
Принципы
построения БД
Тема 3
41
О чем необходимо помнить при удалении
«Висящие указатели»
R1
?
Решение 1: ничего не делать
Решение 2: «могильные плиты»
• сделать специальную отметку в начале записи
Физические ID
Блок
это пространство не
может использоваться
после удаления
Принципы
построения БД
Тема 3
это пространство
может повторно
использоваться
42
Решение 2: «могильные плиты»
• Оставить отметку в таблице
Логические ID
таблица
ID
LOC
Не использовать
повторно ID 7788 и
эту строку таблицы...
7788
Принципы
построения БД
Тема 3
43
Решение 3 (?):
• Иметь ID внутри каждой записи
• Следуя по указателю проверять, ведет ли это к
действительной записи
к
3-77
Id записи:
3-77
Будет ли это работать???
При повторном использовании будет
ли новая запись иметь тот же ID?
Принципы
построения БД
Тема 3
44
Решение 4 (?):
• Для укзания использовать (pointer + hash)
или (pointer + key)?
ptr+
hash
key
• Что произойдет при модификации записи???
Принципы
построения БД
Тема 3
45
Вставка
Простой случай: записи не упорядочены
 Вставить новую запись в конец файла или
вместо удаленной записи
 Если записи переменной длины, не совсем
просто...
Трудный случай: записи упорядочены
 Если «рядом» свободное пространство – не так
страшно ...
 Иначе можно использовать область
переполнения...
Принципы
построения БД
Тема 3
46
Интересные задачи:
• Сколько свободного
места оставлять в
каждом блоке, дорожке,
цилиндре?
• Как часто необходима
реорганизация файла?
Принципы
построения БД
Тема 3
Своб.
пр-во
47
Управление буферами
• Требуется для определенных
характеристик БД
• Почему алгоритм LRU
может быть неэффективным
• «Закрепленные» блоки
• Вынужденный вывод
• Двойная буферизация
• Настройка по адресам
Принципы
построения БД
Тема 3
Подробнее
в книге!
В теме 2
48
Настройка по адресам
Диск
Память
блок 1
блок 1
блок 2
Принципы
построения БД
Зап. A
Зап. A
Тема 3
блок 2
49
Возможные решения
1.Таблица трансляции
адресов
Адрес в БД Адрeс в памяти
Запись-A Запись-A-в-пам.
2. Использование бита «тип» для указателей памяти
на диске
M
Принципы
построения БД
в памяти
Тема 3
50
Настройка по адресам
• Автоматическая
• По требованию
• Отсутствие настройки
Принципы
построения БД
Тема 3
51
Сравнение
• Существует 10,000,000 способов организации
моих данных на диске… Какой лучше для меня?
Гибкость
Рациональное
использование памяти
Сложность
Эффективность
Принципы
построения БД
Тема 3
52
Для оценки стратегии необходимы
следующие параметры:
-> пространство (объем) для ожидаемых данных
-> ожидаемое время элементарных операций:
- извлечения записи с заданным ключом
- извлечения записи со следующим ключом
- вставка записи
- добавление записи
- удаление записи
- обновление записи
- чтение всего файла
- реорганизация файла
Принципы
построения БД
Тема 3
53
Пример
Как бы вы построили систему хранения данных для
Megatron 3000 ? (небольшую реляционную БД)
– Записи переменной длины?
– Записи с продолжением?
– Какие типы данных?
– Фиксированный формат?
– ID записей ?
– Упорядочение?
– Как обрабатывать удаление?
Следующая
тема
Как быстро найти запись с заданным ключом?
Принципы
построения БД
Тема 3
54
Download