Транзакции являются группами операций, которые вносят изменения в базы данных. Базы данных Системы географической информации (GIS), как и другие приложения баз данных, должны поддерживать обновляемые транзакции, обеспечивающие целостность данных и поведение приложения. Во многих случаях можно использовать механизм транзакций системы управления базой данных для управления редактированием и обновлением баз геоданных.
Однако пользователи GIS также имеют некоторые особые условия для транзакций. Пример:
- Часто многочисленные записи обновляются синхронно, как одна транзакция.
- Многочисленные транзакции должны охватывать большие периоды времени (иногда дни и месяцы, а не секунды и минуты).
Кроме того, редакторы должны иметь возможность отменять и восстанавливать изменения. Сеансы редактирования могут охватывать несколько часов или даже дней. Часто правка должна выполняться в системе, отсоединенной от центральной общей базы данных.
Поскольку рабочие процессы ГИС могут охватывать дни или месяцы, база данных ГИС должна оставаться постоянно доступной для ежедневных операций, где каждый пользователь, связанные с данными может иметь личный вид или состояние общей базы данных ГИС. В многопользовательской базе данных транзакции ГИС должны управляться с помощью механизма коротких транзакций СУБД. В ходе этих операций ключевую роль играет база геоданных, управляющая сложными ГИС-транзакциями высокого уровня с помощью простого механизма транзакций СУБД.
Пользователи ГИС часто оказываются в ситуации, когда процесс длинной транзакции крайне важен. В большинстве случаев, благодаря использованию многопользовательской базу геоданных и ArcGIS, появляется возможность управлять обновлениями центральной базы данных ГИС с помощью работы с версиями, подробнее о которой будет рассказано ниже.
Далее приведены примеры процессов сбора и обработки данных GIS, которые требуют модели транзакций, основанной на версии:
- Многократные сеансы редактирования – Простое обновление ГИС может потребовать множества изменений, охватывающих многократные сеансы редактирования, происходившие в течение несколько дней или недель.
- Многопользовательское редактирование — Несколько редакторов часто нуждаются в согласованном обновлении одних и тех же пространственно интегрированных объектов. Каждый редактор нуждается в работе с персонализированным статусом базы данных, чтобы видеть собственные обновления и игнорировать обновления других редакторов. В конечном счете, каждый редактор нуждается в обмене и согласовании обновлений с другими редакторами, чтобы выявлять и разрешать любые конфликты.
- Прикрепление/открепление транзакций – Часто бывает необходимо открепить часть базы геоданных для определенной области или района и обновить ее информацию в неподключенном состоянии, которое может длиться дни или недели, или увезти ее, чтобы отредактировать или обновить на месте. Эти обновления должны быть перенесены в главную базу данных.
- История — Иногда бывает полезно сохранять историческую версию каждого объекта в базе геоданных даже после того, как текущая версия была обновлена, чтобы сохранить в архиве копию удаленных и измененных объектов, или чтобы проследить историю отдельного объекта, например, происхождение участков или свойства обновления объектов в базе данных карт страны.
- Перенос обновлений, включающих только изменения – многопользовательские базы геоданных и инфраструктура пространственных данных, в которых информация распространяется среди предприятий, являются плодом совместных усилий и требуют передачи обновлений через интернет на расширяемом языке разметки (XML) для обмена обновлениями, включающими только изменения, между базами геоданных.
- Копии распределенных баз географических данных – региональная база геоданных может быть частичной копией главной многопользовательской базы геоданных для отдельного географического района. Периодические две базы геоданных должны синхронизироваться с помощью обмена обновлениями.
- Неточная репликация между СУБД – часто ГИС-данные должны быть синхронизированы на нескольких копиях (репликах) базы геоданных, где каждый сайт выполняет собственные обновления своей локальной базы геоданных. Часто базы геоданных лишь время от время подключаются к Интернет. На регулярной основе обновления должны передаваться от одной реплики базы геоданных другим, а их содержимое синхронизироваться. Часто бывает так, что СУБД отличаются друг от друга, например, при репликации наборов данных между Microsoft SQL Server, Oracle и IBM Db2.
Модель транзакций базы геоданных: традиционные версии
Механизм базы геоданных для управлением этими и многими другими важными процессами GIS заключается в поддержании множества состояний в базе геоданных, и что самое важное, это сопровождается обеспечением целостности географической информации, правил и поведения. Эта возможность управлять, работать и видеть множество состояний основывается на работе с версиями. Уже из названия понятно, что работа с версиями подразумевает запись версий отдельных объектов, когда они изменяются, добавляются и удаляются в различных состояниях. Каждая версия записывает каждое состояние объекта или пространственного объекта в виде строки таблицы с важной информацией о транзакции. Любое количество пользователей могут одновременно работать и управлять множеством версий.
Версии позволяют записывать все транзакции в виде серий изменений базы данных во времени. Это значит, что разные пользователи могут работать с разными видами и состояниями базы геоданных. Целью является открытый, быстрый, многопользовательский доступ. Например, система должна работать быстро и эффективно поддерживать использование наборов данных, содержащих сотни миллионов записей, к которым одновременно подключены клиентов пользователей.
Модель транзакций базы геоданных, основанная на версиях, относительно проста – обновления записываются в таблицы изменений (дельта-таблицы).
Версии точно записывают состояния объектов базы геоданных в две дельта-таблицы:
- Таблица добавлений
- Таблица удалений
Для просмотра и работы с нужным состоянием базы геоданных используются простые запросы, например, для просмотра состояния данных на заданный момент времени или для просмотра текущей версии конкретного редактора и внесенных им изменений.
Версионные базы геоданных и наборы данных используются для управления длинными транзакциями в каждой СУБД с применением среды коротких транзакций базы данных.

В примере таблицы версий, участок (номер 45) обновлен и стал участком номер 47. С помощью версий исходный участок сохранен в Таблице удалений, а новый – в Таблица добавлений. В другие системные таблицы базы геоданных записывается информация о версии транзакции, например, время и порядок каждого обновления, название версии и ID состояния каждого обновления. Также каждая версия имеет собственные права безопасности и доступа.
Это позволяет большинству клиентов работать с версией Default, в то время как редакторы одновременно обновляют свои собственные версии данных.
Каждая версия может быть многократно обновлена, а редакторы подключаются и работают с обновленной версией, когда вносят дополнительные изменения в данные. Когда редакторы готовы поделиться обновлениями со всем предприятием, выполняется операция согласования и закрепления для передачи изменений, содержащихся в обновленной версии, в родительскую версию. Процесс разрешения используется для выявления и согласования любых потенциальных конфликтов в ходе процесса.
Дополнительные сведения о версиях см. в разделе Обзор работы с версиями.