Многопользовательская работа в локальной сети
Типы блокировок
В однопользовательской системе с данными работает только один человек, и ему нет необходимости думать о разделении доступа к файлам. Однако с появлением пользователей, желающих получить доступ к одним и тем же данным, планирование разделения доступа к базе становится актуальным.Автоматическая блокировка
В Visual FoxPro может осуществляться автоматическая или ручная блокировка данных. При использовании определенных команд FoxPro попытается автоматически заблокировать записи или всю таблицу (табл. 20.1). | Таблица 20.1. Команды, автоматически блокирующие таблицу или записи. | КомандаПолная блокировка таблицы и блокировка изменений
В некоторых случаях, например при изменении структуры данных, вам необходимо осуществить полную блокировку таблицы для получения исключительных прав на нее. В этом случае другим пользователям запрещается чтение, запись и изменение структуры указанной таблицы и они не смогут получить к ней доступ.Блокировка таблицы
Для установки блокировки изменений таблицы вы должны использовать функцию flock, которая имеет следующий синтаксис: | FLOCK([рабочаяОбласть] | [псевдонимТаблицы]) | Функция блокировки проверяет текущий статус рабочей области или таблицы.Блокировка записей
По возможности рекомендуется использовать блокировку отдельных записей, а не таблицы в целом. Заблокированная запись может изменяться только установившим блокировку пользователем, остальные пользователи имеют к ней доступ только на чтение.Установка режима повторных попыток блокировки данных
Если запись или таблица уже заблокированы, вам не удастся с первого раза установить блокировку. В этом случае вы можете использовать команду set reprocess, которая задает количество дополнительных попыток заблокировать таблицу (или запись) или время, на протяжении которого будут выполняться дополнительные попытки блокировки.Снятие блокировок таблиц и записей
В большинстве случаев при переходе от одной записи к другой блокировка снимается. Однако если вы заблокировали запись командами блокировки, ее необходимо разблокировать, чтобы к ней могли получить доступ другие пользователи. В табл. 20.2 описаны команды, используемые для снятия блокировок.Сеансы работы с данными
В Visual FoxPro для многопользовательской работы вы можете использовать сеансы работы с данными, которые представляют собой среду окружения, связанную с формой или набором форм. С помощью сеансов работы с данными вы можете открывать одну и ту же форму на разных рабочих станциях или даже на одном компьютере (рис. 20.1), при этом каждая из них будет использовать отдельную копию данных. | Рис. 20.1.Использование буферов. Блокировка при буферизации.
Одним из мощных средств организации многопользовательской работы в Visual FoxPro является буферизация данных, которая позволяет лучше использовать локальные ресурсы и снижает нагрузку на сеть. При буферизации все сделанные вами изменения хранятся в оперативной памяти на рабочей станции и не обновляются на файл-сервере, пока вы не выполните соответствующую команду.Обнаружение и устранение конфликтов
При совместной работе с базой данных возможны конфликты, когда один или более пользователей пытаются заблокировать уже заблокированную другим пользователем запись. Возможны и взаимоблокировки, когда пользователь заблокировал одну запись или таблицу и пытается заблокировать вторую, которая уже заблокирована вторым пользователем.Использование транзакций
Под транзакцией в системах управления базами данных понимают логическую единицу работы, которая представляет собой последовательность нескольких операций, в процессе выполнения которых сохраняется целостное состояние базы данных.