В многопользовательских базах геоданных или базах геоданных рабочей группы один и тот же набор данных в одно и то же время могут просматривать или редактировать несколько пользователей. Чтобы можно было работать с данными из базы геоданных в таких приложениях, как ArcMap, приложение должно работать по принципу, что схема базы геоданных остается неизменной во время работы с содержимым базы геоданных. Например, во время добавления класса пространственных объектов из базы геоданных на вашу карту, ее схема не должна быть изменена вами или другим пользователем. Как только вы удалите класс пространственных объектов с вашей карты или закрытого документа карты, и другие пользователи не будут производить к нему запросы или редактировать этот класс пространственных объектов, то ее схема может быть изменена.
Блокировка схемы: общий обзор
Базы геоданных и их наборы данных довольно редко статичны. Большинство наборов данных время от времени редактируется и обновляется. Иногда в базу геоданных по самым разным причинам могут быть добавлены новые наборы данных, а существующие наборы данных могут быть удалены. Помимо этого, для существующих наборов данных производится изменение схемы – например, производится добавление столбца атрибутов, изменение правил топологии, добавление картографических представлений и так далее.
Если вы работаете с однопользовательской базой геоданных, то эти изменения могут быть совершены абсолютно спокойно: вам не нужно думать о том, как результаты вашей работы могут повлиять на работу других пользователей. Однако если другие пользователи будут иметь доступ и использовать ту же самую базу геоданных, в которой вы хотите совершить изменения, то вам будет нужно установить несколько рабочих потоков (workflows), чтобы произвести изменения схемы. Например, чтобы произвести изменения без оказания влияния на работу других пользователей, вы можете назначить время для выполнения работы со схемой, когда все другие пользователи не будут работать с системой.
ArcGIS предоставляет несколько автоматизированных механизмов блокировки схемы, чтобы помочь вам в управлении вашими изменениями базы геоданных. Вам следует рассмотреть их по мере составления плана вашей работы.
Разделяемые блокировки схемы
ArcGIS автоматически устанавливает разделяемую блокировку (shared lock) для отдельного набора данных во время его использования, например, когда пользователь редактирует или производит запрос к классу пространственных объектов или таблице. Этот механизм используется для того, чтобы другие пользователи не могли производить изменения в данном наборе данных и его схеме, пока он находится в использовании.
В любое время для отдельного класса пространственных объектов или таблицы может быть установлено неограниченное количество разделяемых блокировок. Когда вы используете ArcGIS для изменения схемы вашей базы геоданных – например, чтобы добавить поле или изменить правило – ArcGIS будет пытаться установить эксклюзивную блокировку для данных, которые изменяются. Однако, если для набора данных была установлена разделяемая блокировка, то эксклюзивная блокировка (exclusive lock) уже не может быть установлена.
Эксклюзивные блокировки схемы
Эксклюзивная блокировка используется для блокировки набора данных в базе геоданных на использование его другими пользователями для внесения в него изменений, например, изменения схемы набора данных. Как только пользователь с соответствующими правами начнет производить изменения в наборе данных базы геоданных, ArcGIS автоматически установит эксклюзивную блокировку (exclusive lock) на отдельную таблицу атрибутов, таблицу класса пространственных объектов, растровую таблицу или другой набор данных.
Если пользователь захочет произвести изменения в схеме базы геоданных, то наборы данных, с которыми он или она будет работать, не должны использоваться никем другим. Иначе говоря, чтобы вы могли произвести изменения в наборе данных, для него не должна быть установлена разделяемая блокировка (shared lock).
Блокировки в персональных базах геоданных
В персональных базах геоданных все блокировки применяются на все содержание во всей базе геоданных. Как только эксклюзивная (exclusive) или разделяемая (shared) блокировка будет применена для объекта персональной базы геоданных, то это блокирует всю базу геоданных. Это означает, что одновременно редактировать персональную базу геоданных может только один редактор.
Любой пользователь, который имеет необходимые права доступа уровня чтение/запись к файлу базы данных Microsoft Access (.mdb), который содержит персональную базу геоданных, может редактировать и изменять содержание ее схемы.
При получении доступа к персональной базе геоданных, которая хранится на сетевом диске, или через пути UNC; проверьте, чтобы у всех пользователей были хотя бы права на запись в папку с этой базой геоданных. Если у всех пользователей нет права на запись – только один пользователь сможет открывать персональную базу геоданных. Последующие попытки открыть персональную базу геоданных приведут к ошибке блокировки схемы, из-за неспособности Microsoft Jet Database Engine открыть и изменить файл .ldb, контролирующий доступ к файлу .mdb.
Блокировки в файловых базах геоданных
Пользователи должны иметь право доступа на чтение/запись к папке файловой базы геоданных, чтобы они могли произвести изменения в ее схеме.
Блокировки схемы, разделяемые и эксклюзивные, в файловой базе геоданных применяются для отдельных наборов данных и связанных с ними таблиц. Например:
- Если вы используете блокировку класса пространственных объектов в рамках набора классов объектов, то блокировка применяется для целого набора классов объектов и его содержания.
- Блокировки применяются также для объектов обоих сторон класса отношений (relationship class). Например, если два отдельных класса пространственных объектов будут связаны посредством класса отношений, и вы примените эксклюзивную или разделяемую блокировку для объекта одной стороны, то блокировка будет также применена и для объекта другой стороны.
Блокировки в многопользовательских базах геоданных и базах геоданных рабочих групп
Пользователи должны обладать набором данных для изменения схемы и необходимыми правами доступа для изменения данных других пользователей.
Блокировки схемы, разделяемые и эксклюзивные, применяются для отдельных наборов данных и связанных с ними таблиц. Например:
- Если вы используете блокировку класса пространственных объектов в рамках набора классов объектов, то блокировка применяется для целого набора классов объектов и его содержания.
- Блокировки применяются также для объектов обоих сторон класса отношений (relationship class). Например, если два отдельных класса пространственных объектов будут связаны посредством класса отношений, и вы примените эксклюзивную или разделяемую блокировку для объекта одной стороны, то блокировка будет также применена и для объекта другой стороны.