Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в СУБД HyTech.doc
Скачиваний:
12
Добавлен:
01.03.2025
Размер:
2.67 Mб
Скачать

Особенности организации таблиц в субд HyTech

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

Такая организация данных отличается следующими особенностями:

  • Изменяется способ модификации, т.е. добавление или изменение записи сводится к простой записи в последовательный файл, что требует минимальных накладных расходов.

  • Изменяется способ коррекции индексов. Обычно, модификация таблицы, кроме изменения самих данных, требует коррекции индексов. Чем больше в таблице проиндексированных элементов, тем большее время будет занимать их коррекция, а значит, и общее время выполнения модификации. Отказ же от индексов, в общем случае, ухудшает время поиска, т.к. требует полного перебора данных. Дифференциальная организация файлов предлагает компромиссное решение: измененная или добавленная запись заносится в журнал изменений таблицы, в нем же метятся удаленные записи, и коррекция индексов не производится, т.к. индексы построены только для постоянной части таблицы.

  • Появляется возможность использовать более эффективные методы индексирования, так как при выборе метода индексирования разработчики СУБД обычно сталкиваются с двумя противоречивыми требованиями: необходимо обеспечить эффективный механизм выполнения многокритериального поиска и, в то же время, сохранить приемлемое время изменения индексов при модификациях данных. Известно, что насколько эффективен при инвертированной организации многокритериальный поиск по сложным запросам, настолько же неэффективно интенсивное обновление и модификация инвертированных списков. Дифференциальная организация файлов позволяет использовать преимущества инвертированных списков при поиске и устранить их недостатки при модификации.

  • Упрощается система организации транзакций. Известно, что одним из базовых свойств транзакции является согласованность по чтению. Это означает, что изменения, производимые в процессе выполнения транзакции одним пользователем, не должны быть видны другим пользователям до завершения или прерывания транзакции. При дифференциальной организации файлов это решается достаточно просто. Перед началом транзакции делается «мгновенный снимок» состояния таблицы в журнале изменений, что не требует операций с диском, создания «черновых» страниц и прочих операций, связанных с реализацией транзакции. Журнал транзакций при этом содержит список таблиц, связанных с транзакцией, и их мгновенные снимки. При этом пользователю, выполняющему транзакцию, доступно реальное состояние таблицы, в том числе и сделанные им изменения. При удачном завершении транзакции произведенные пользователем изменения станут доступны всем, а информация о завершенной транзакции будет стерта в журнале транзакций. При неудачном завершении транзакций отказ от выполненных изменений производится достаточно просто, а журнал таблицы сокращается до сохраненной ранее точки, т.е. снимка момента начала транзакции. Таким образом, снимки всегда соответствуют согласованному состоянию таблиц, означающему, что данные находятся в непротиворечивом состоянии.

  • Значительно повышается уровень сохранности данных и устойчивости СУБД к отказам, так как потери данных при возможных сбоях питания и ПО могут затронуть только журнал изменений.

  • Облегчается поддержка распределенных БД. Известно, что классическая схема организации данных не позволяет легко определить, какие изменения нужно передать в другие узлы, т.е. для отслеживания изменений требуется громоздкая система протоколирования. При дифференциальной организации данных проблема легко решается при помощи упомянутых выше «мгновенных снимков» состояния таблиц.

  • В системе с дифференциальной организацией файлов достаточно просто решаются вопросы копирования для целей резервирования БД, так как достаточно сделать «снимки» архивируемых таблиц и выполнить копирование данных в рамках сделанных «снимков».