В этом параграфе мы обсудим основные принципы работы в компьютерной сети, которые
практически одинаковы во всех системах управления базами данных.
Основное различие, как правило, скрывается в словах рекламных проспектов, которые
утверждают, что продукт супернеобычный, сверхскоростной, сам знает, когда запись
блокировать, когда разблокировать, или, если угодно, снять блокировку. Некоторые компании
поступают еще хитрее - замаскировав новым термином старую технологию ловят доверчивые
пользовательские сердца. Ваше дело - верить или не верить рекламе, но разобраться, что
необычного нас ждет, когда мы, наконец, решим обрабатывать наши данные в сети, стоит.
При чтении этого параграфа вы
• ознакомитесь с основными особенностями разработки пользовательского приложения,
которое предназначено для работы в локальной сети.
• подготовитесь к решению возможных сетевых конфликтов, которые могут возникнуть у
пользователей при работе с приложением в сети.
Visual FoxPro
Как правило, данные необходимо использовать не на одном компьютере. Обычно с ними
работает группа пользователей. Способ обмена данными посредством дискеты, безусловно,
значительно облегчает работу программиста, однако такой способ организации выглядит в
настоящее время скорее вызовом, чем правилом. Тем более, что сама работа в сети экономит
массу средств и самое главное - время, которое, как вам уже известно, все больше становится
эквивалентом денег.
Visual FoxPro обеспечивает работу с данными с помощью монопольного или раздельного
доступа к данным, опций блокировки, буферизации таблиц и записей, а также поддержки
транзакций. Помимо этого Visual FoxPro автоматизирует многоразовую установку среды
окружения посредством сессий данных.
В многопользовательских системах необходима уверенность, что только один пользователь
может заносить данные в файл или запись в текущий момент. Один из способов добиться этого -
открыть таблицу с монопольным доступом. Ни один пользователь или приложение не смогут
после этого ни читать данные из этого файла, ни писать в него. Приложение выведет сообщение
об ошибке, если какая-нибудь таблица, необходимая для монопольного доступа, уже открыта.
После выполнения команды SET EXCLUSIVE ON все таблицы будут открываться в
монопольном режиме. Если необходимо проверить текущую установку, то используйте функцию
SET() с аргументом EXCLUSIVE следующим образом:
? SET("EXCLUSIVE")
Если вы не хотите менять текущую установку в приложении для монопольного или
многопользовательского режима открытия таблиц, то открывайте таблицу с помощью команды
USE и точного указания, в каком режиме вы будете ее использовать. Например, если вам
обязательно надо открыть таблицу в монопольном режиме, необходимо использовать следующую
команду:
USE myfile EXCLUSIVE
В дополнение к монопольному или многопользовательскому режиму доступа к файлам вы
можете управлять доступом к таблицам с помощью блокировок как файлов, так и записей.
Блокировки могут обеспечить как долгосрочный, так и краткосрочный контроль над данными.
Вдобавок, блокировки предотвратят одновременную модификацию двумя или более
пользователями одной и той же записи или таблицы. Существуют два типа блокировок:
автоматические и ручные.
Если выполняемая команда требует блокировки таблицы или записи и запись или таблица еще
не заблокированы, Visual FoxPro автоматически пытается совершить блокировку, выполняет
команду и снимает блокировку. Команды могут блокировать запись, целую таблицу или
заголовок таблицы. Когда заблокирована запись, то другие пользователи могут добавлять,
удалять и изменять другие записи, кроме заблокированной. Блокировка таблицы предотвращает
любые изменения другими пользователями в таблице. Блокировка заголовка занимает
промежуточное положение, другие пользователи могут изменять записи, но не могут удалять и
добавлять записи.
В табл. 7.5 приводятся команды, которые осуществляют автоматическую блокировку, и
указано, какой вид блокировки они выполняют.
converted to PDF by HupBaH9I