Хранение мультимедийных данных

Обновление по месту

Удаление

Вставка строк (кортежей)

Для вставки отыскивается свободное место на любой странице (т.е. местоположение записей никак не упорядочивается.

Физически запись со страницы никак не удаляется. Просто бит удаления в заголовке записи (или фрагмента) устанавливается в “1”.

Это самый простой случай модификации данных. При этом новая запись записывается на место старой.

Когда в таблице содержится столбец, имеющий тип данных LОВ (large objects – большие объекты), тогда в каждой строке таблицы хранится лишь небольшой указатель на то место внешней памяти, где действительно хранятся данные этого типа.

Существуют различные типы LOB, служащие для хранения текстовой, графической и другой информации. Для примера отметим два из них: ВLОВ и BFILE, используемые в СУБД Oracle.

Все типы данных LOB можно разделить на две части:

- сохраняемые в базе данных (к ним, в частности, относится BLOB)

- сохраняемые вне базы данных виде файла операционной системы(к ним, в частности, относится BFILE).

Принципы хранения данных типа LОВ и проиллюстрированы на рис. 7.4.

Рис. 7.4. Использование указателей для хранения мультимедийных данных

Рис. 7.4 показывает, что характеристики хранения полей LОВ независят от характеристик хранения базовой таблицы. Это упрощает процесс обращения к данным LОВ, занимающим обычно большие области диска. В этом примере все не-LОВ- и не-ВFILE - данные для каждой строки таблицы хранятся вместе в одной табличной области, данные столбца LОВ — в другой табличной области, а данные столбца ВFILE — в файловой системе сервера. При этом основные табличные и связанные с ними мультимедийные данные распределяются для хранения среди разных физических областей (например, дисководов), что снижает конкуренцию при доступе к диску и повышает общую производительность системы.

8.Управление буферами

Буфер – область оперативной памяти, используемая для кратковременного хранения данных, участвующих в процессе обмена между внешней и оперативной памятью. В процессе чтения /записи, с диска данные попадают в буфер и там некоторое время хранятся (рис. 8.1). Обычно размер буфера выбирается кратным размеру страницы.

Основное назначение буферов - синхронизация работы быстрой оперативной памяти с медленной внешней памятью. Необходимость такой синхронизации обусловлена тем, что время доступа к оперативной памяти меньше, чем к внешней.

Чем дольше данные хранятся в буфере, тем больше вероятность

того что данные, требуемые пользовательским запросом на чтение или модификацию, находятся не во внешней памяти, а в буфере. Следовательно, чем дольше данные будут храниться в буфере, тем выше будет производительность системы. Однако очень долго хранить данные в буферах нельзя. Так как если данные постоянно читаются, то затрачивается очень много оперативной памяти. А длительное хранение модифицированных данных снижает надежность системы, т.к. при отказе содержимое оперативной памяти может быть потеряно.

Поэтому число буферов и максимальное время нахождения данных в каждом буфере (время освобождения) выбирается на основе компромисса между производительностью и надежностью системы.

СУБД должна управлять буферами. Эта функция возлагается на диспетчер буферов. Диспетчер определяет, какой буфер должен заполняться, а какой освобождаться.

Каждая СУБД использует разные правила буферизации (освобождения буферов). Наиболее распространенными являются следующие правила:

1. Правило наиболее давнего использования (правило LRU- last recently used):

чем больше времени не используется буфер (т.е. страницы данных, находящиеся в буфере), тем быстрее он освобождается.

2. Правило FIFO: первым пришел – первым вышел.

Рис. 8.1 поясняет процесс использования буферов прикладными программами.

 
 


Рис. 8.1. Использование буферов прикладными программами

Когда прикладная программа обращается к СУБД с запросом записи данных (на языке SQL), то эти данные из рабочей области прикладной программы сначала попадают в буфер и некоторое время там хранятся. Затем диспетчер файлов отсылает данные буфера (в виде страницы) операционной системе, которая записывает их во внешнюю память.

При запросе на чтение данных процесс практически аналогичен: сначала диспетчер буферов ищет необходимые данные в одном из буферов и, если не находит, то из внешней памяти считывается страница, помещается в буфер, из буфера данные поступают в рабочую область.

Следует отметить одну важную деталь: обмен данными между буферами и внешней памятью происходит на уровне страниц, а между буферами и рабочими областями – на уровне строк. То есть пользователь отсылает строки и получает строки.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: