На главную страницу
Главная О компании Программы GAAP Техническая поддержка Полезное
     Инотек Бухгалтер Про-
       фессионал. Руководс-
       тво администратора
    Формулы в програм-
      ме Инотек Финансы
     Инотек Бухгалтер
      Эксперт. Руководс-
      тво пользователя
     Инотек Отчеты.
       Руководство
       пользователя
Программы :: Документация :: Инотек Бухгалтер Профессионал. Руководство администратора (Оглавление)

1.3. Многопользовательский доступ к БД

В таблице приведен порядок обновления записи двух пользователей работающих с БД.

Момент времени

Пользователь 1

Пользователь 2

1

Чтение

 

2

 

Чтение

3

Изменение

 

4

 

Изменение

5

Запись

 

6

 

Запись

Из таблицы видно, что Пользователь 2 не имеет возможности видеть изменения сделанные Пользователем 1 (Они были сделаны, после того как Пользователь 2 прочитал запись). Поэтому после того как Пользователь 2 запишет изменения в БД, изменения записи сделанные Пользователем 1 будут навсегда потеряны. Если бы Пользователь 2 не читал запись до Момента 5, то изменения сохранились бы. Но без какого-либо управления нельзя гарантировать, что Пользователь 2 будет всегда читать, после того как Пользователь 1 запишет изменение в БД. Очевидно, что только один пользователь должен иметь возможность обновлять (записывать) запись в каждый конкретный момент времени. Это достигается через механизм блокирования записей. Блокирование должно появляться до обновления БД. Тогда мы получим следующий порядок, приведенный в таблице.

Момент времени

Пользователь 1

Пользователь 2

1

Запрос на блокировку

 

2

Блокировка

Запрос на блокировку

3

Чтение

 

4

Изменение

 

5

Запись

 

6

Освобождение блокировки

Блокировка

7

 

Чтение

8

 

Изменение

9

 

Запись

10

 

Освобождение блокировки

После того, как Пользователь 1 заблокировал запись в Момент 2, Пользователь 2 будет ждать, когда запись будет разблокирована для того, чтобы начать с ней работать. В Момент 6, когда Пользователь 1 закончит обновление, блокировка будет снята. Пользователь 2 получает возможность заблокировать запись и запись (которая сейчас включает изменения сделанные Пользователем 1) может быть им прочитана, изменена и записана.

Приведенный пример показывает, что в каждый момент времени только один пользователь может обновлять БД.

На каждом пользовательском компьютере выполняется своя копия программы работы с БД. Каждая пользовательская выполняемая программа связана с процессом на сервере. Для различения этих процессов каждый пользователь должен иметь уникальный идентификатор пользователя (userid).

При использовании механизма транзакции, каждый пользователь имеет уникальный log-файл (журнал) транзакций. По умолчанию, он называется userid.log. Журнал транзакций содержит изменения БД, сделанные пользователем в процессе транзакции и используется для поддержки восстановления БД.

Управление блокировками и автоматическим восстановлением выполняется менеджером блокировок. Каждый процесс посылает запрос на блокировку менеджеру блокировок, который ставит запрос в очередь и обрабатывает ее на основе правила “Первый пришел, первый обработан” (first in first out - FIFO). Процесс будет дожидаться ответа от менеджера блокировок о подтверждении или отказе в блокировке. В блокировке может быть отказано, когда запрос на блокировку ожидает в очереди больше некоторого периода называемого тайм-аут (timeout).

TAF-файлы (transaction activity file) используются для управления восстановлением. По умолчанию, они называются vista.taf.

Во время блокирования записи на чтение или на запись реально происходит соответствующее блокирование всего файла БД в котором содержится эта запись.

В RDM существует механизм блокирования и для конкретной записи. Это реализуется с помощью так называемых битов блокировки (lock bit). Из программы можно установить и снять такой бит. Если один пользователь работает с записью (взял ее на редактирования с целью изменения и записи), то он может установить бит блокировки. Другой пользователь (точнее, принадлежащий ему процесс), увидев что такой бит установлен, будет знать, что соответствующую запись редактирует другой пользователь.

Метод с использованием битов блокировки предпочтительнее блокирования файла, когда время просмотра, изменения и сохранения зависит от воли пользователя и непозволительно блокировать на это время весь файл БД. Однако из-за сбоя, произошедшего в это же время, бит блокировки может быть не снят. В этом случае, для нормальной работы программы, его нужно снимать принудительно, с помощью утилиты dbclrlb.exe (см. главу 4.2.).

В программах “Инотек Бухгалтер” реализуются оба эти метода. Основным является метод блокирования файлов БД на чтение или запись, так как он не зависит от пользователя. Дополнительным является блокирование конкретной записи через бит блокировки. Этод метод используется при редактировании хозяйственных операций, чтобы не допустить одновременной работы с одной хозяйственной операцией нескольких пользователей.

 

НОВОСТИ
Новости компании
Архив новостей
Новости законодательства
Архив новостей законодательства
Семинар...
15 ноября 2006 г. мы проводим семинар на тему «Принципы работы в модуле Инотек Склад»   подробнее...
Новое в отчетности   подробнее...
Техподдержка: Фиксация остатков в модуле Финансы   подробнее...
Индекс цитирования
   Copyright © 1999 - 2011 Инотек Предложения по работе сайта