|
|
|
| Belarus.NET > Belarus Information Network |

Стрелки показывают направление связи в LeoBase, но индексы позволяют проводить преобразование как вправо, так и влево, от одного множества записей к другому.
Приблизительная завиcимость скорости поиска от количества записей в БД и сложности запроса на поиск (количества термов) показана на графике внизу:

Для того, чтобы задействовать механизм моментальных снимков, следует создать системный журнал. При работе комплекса БД заполнение системного журнала организовано циклически. Он состоит из нескольких секций одинакового размера. Запись в секции идет последовательно. Когда свободных секций не остается, аннулируются данные сначала первой секции, затем следующей и т.д. Число секций и размер каждой является важными характеристиками. Рассмотрим следующую аналогию. Имеется альбом фотографий, с фотоснимками разных стран. Количество фото, которые там могут поместится ограничены его объемом. При переполнении альбома выбрасываются самые старые фотографии и на их место помещаются новые.Если путешествия происходят очень часто, альбом заполняется и обновляется достаточно быстро. Таким образом, максимальная давность фото о событии определяется толщиной альбома и частотой поездок по разным странам.
Так и в системном журнале, самое старое состояние базы, которое можно будет посмотреть (активизировав соответствующий снимок) зависит от размера журнала, частоты изменений БД, а также от количества секций (так как при необходимости секция аннулируется целиком).
Никаких особенных рецептов для задания размеров системного журнала не
существует - это чисто эмпирический процесс зависящий от размера базы,
динамики ее изменения и т.п. Отметим лишь следующее: при операциях поиска
или генерации отчета, которые могут являться достаточно длительными, происходит
фиксация активного снимка. Поэтому если при этом возникнет переполнение
журнала (причем аннулируются данные той секции, с которой идет работа),
то до завершения операции обновление журнала проведено не будет, и как
следствие сервер заблокирует на это время все модифицирующие операции.

Поясним работу системного журнала. Имеется системный журнал, состоящий из 4 секций.
На шаге 1 системный журнал пустой. На шаге 2 у него заполнены 3 секции
целиком и в конце первой секции установлен снимок, используя который генерируется
объемный отчет. На третьем шаге системный журнал переполняется. При этом
данные в первой секции должны быть аннулированы.
Однако так как генерируется отчет по снимку, тот зафиксирован ядром LeoBase. Поэтому сервер прекращает заполнения системного журнала, блокирует все системные транзакции до снятия снимка (завершения генерации отчета).
Выходов из этой ситуации два. Либо увеличить общий объем системного журнала, либо разбить его на большее число секций, при том же объеме.
Если число секций будет 5, появится шанс, что установленный снимок будет
не в первой, а во второй секции. При этом блокировка произойдет только
при повторном заполнении первой секции и переходе ко второй. Это дает дополнительное
время, за которое генерация отчета может завершится.
Однако переключение между секциями требует некоторого времени. Основная
задача проектировщика - найти баланс между числом секций и скоростью работы.
Поясним назначение данной системы на следующем примере.
Компания N создала информационно-справочную систему большого объема. Изменение и пополнение базы данных происходит постоянно, причем пользователи, купившие этот продукт, должны своевременно получать новую версию базы. Есть два способа решения этой проблемы. Первый - рассылать всем абонентам полную копию новой базы. Если общий объем данных, по сравнению с изменениями, достаточно велик, то это тянет за собой значительные накладные расходы. Второй вариант - пересылать только новую и измененную информацию. Безусловно, это гораздо эффективнее. Именно реализация второго варианта возложена в LeoBase на систему UPGRADE.
Проведение UPGRADE разделятся на две фазы. Фаза 1 проводится на компьютере, называемом хостом, где хранится последний вариант базы данных. Ее результатом становится UPGRADE-файл, содержащий все изменения и дополнения, произошедшие с заданного момента времени. Фаза 2 проводится на компьютере - абоненте, который на основе информации, считанной из UPGRADE-файла производит актуализацию содержимого собственной базы данных.
Необходимым условием успешной работы фазы 1 является ведение на хосте журнала изменений. UPGRADE-файл может быть двух форматов: Fast и Compact. В первом случае файл формируется относительно быстрее, однако его размер больше, нежели во втором. Формат Compact требует обязательного наличия системного журнала, а размер полученного UPGRADE-файла является минимально возможным. Основное отличие между двумя форматами заключается в том, что в Fast-формате в UPGRADE-файл модифицируемые записи помещаются целиком, а в Compact — только реально измененные поля. Это не относится к МЕМО-полям, которые и в том, и в другом случае записываются в UPGRADE-файл только при необходимости (т.е. это не относится к изменению содержимого самой записи).
Для операций обновления и согласования БД большое значение имеет понятие системного и UPGRADE-времени LeoBase. Они представляют собой переменные типа TLBSystemTime. UPGRADE-время используется для синхронизации содержимого БД на хосте и абоненте. Системное время служит начальным отсчетом для проведения фазы 1 на хосте.
Click Here
to Return Back
Webmasters,
contact Belarus.net support
Click Here
to visit Belarus.net
Recommended websites: Free shopping cart software | Pubmed web analytics software | Hair loss consumer information | Hair cloning information |