Стратегии обслуживания данных
Транзакции, выполняемые для географических данных, могут значительно изменяться по продолжительности и сложности. База геоданных поддерживает две стратегии работы с данными - работа с версионными данными и работа с данными без версий.Это позволяет сохранить баланс между потребностями пользователей и приложений в выполнении коротких и длинных транзакций для данных, которые могут быть простыми или сложными.
Каждая стратегия может быть применена на основе схемы feature class-by-feature class или table-by-table, так что вы сможете использовать обе эти схемы в одной и той же базе геоданных.
Вы будете редактировать данные при использовании каждой из этих стратегий схожим образом — вы будете производить редактирования в сессии редактирования и будете работать с множеством одинаковых инструментов. Что будет различаться, так это то, каким образом будет производиться поддержка и обслуживание лежащих в основе источников данных. Существует также несколько отличий, заключающихся в том, какие данные вы сможете редактировать, а также какой тип рабочего потока вы сможете выполнять. В данном разделе рассказывается об этих различиях.
Работа с данными без поддержки версий
Данная стратегия является самой простой, поскольку при ее использовании вы не будете работать с несколькими версиями — она просто использует модель транзакций, лежащую в основе СУБД. Неверсионные редактирования эквивалентны стандартным транзакциям в базе данных.
Для редактирования данных необходимо включить неверсионное редактирование в диалоговом окне Опции редактора (Editor Options), открыть сеанс редактирования, а затем выполнить необходимые операции, например добавление, удаление или перемещение объектов и обновление их атрибутов. Первое редактирование в сеансе начинается с транзакции. При сохранении изменений отдельные операции редактирования будут закреплены в базе данных как одна транзакция. После сохранения следующее ваше редактирование начинается с новой транзакции. При необходимости вы можете сохранять за раз малое или большое количество операций, если только они будут производиться в одной сессии редактирования.Рекомендуется сохранять изменения как можно чаще, чтобы избежать блокировки данных для других пользователей, которые хотят получить доступ или редактировать эти же данные. Как только изменения будут сохранены, они станут доступны для всех других пользователей и приложений, которые имеют доступ к этим данным.
Если вы не хотите передавать свои изменения в базу данных - прекратите редактирование, не сохраняя изменения. Все изменения в этой транзакции, то есть изменения, внесенные после последнего сохранения, или все изменения с момента открытия сеанса редактирования, если они еще не были сохранены, не будут сохранены и не будут закреплены в базе данных.
При редактировании будут использоваться любые уникальные индексы, ограничения (constraints) и триггеры (triggers), определенные для данных в рамках СУБД. Будет использоваться такая же схема блокировки, как будто если бы вы выполняли транзакции для данных, хранимых в СУБД, напрямую. Следовательно, для пользователей или приложений существует риск того, что при доступе или изменении одних и тех же данных они будут блокировать друг друга. При использовании неверсионного редактирования в среде многопользовательского редактирования вы должны понимать принцип работы уровней изоляции (isolation levels) и блокировок в вашей СУБД и при необходимости установить соответствующий уровень изоляции (isolation level) в СУБД до того, как вы начнете работать в ArcGIS.
Эта стратегия подходит для простых объектов, которые не требуют управления историей или многочисленными представлениями данных, имеющих версии. Поскольку при использовании данной стратегии не требуется наличие версий, она будет также удобна, если вам нужно, чтобы и ГИС, и не-ГИС приложения могли разделять доступ к общей базе данных.
Возможное применение
- Простая интеграция географических данных в существующие приложения путем разрешения приложениям третьих сторон (приложения, которые не были созданы с помощью программного обеспечения Esri) производить считывание и изменение данных, которые используются приложениями ArcGIS.
- Управление проектами с простыми рабочими потоками и операциями редактирования. Если транзакции будут всегда простыми и не будут длинными, то вы сможете изменять данные напрямую без необходимости в объединении изменений и периодическом управлении дополнительными таблицами, которые необходимы при работе с версиями.
Ограничения:
- Вы можете редактировать только простые данные — точки, линии, полигоны, аннотации и отношения. Вы не можете редактировать классы объектов, которые участвуют в топологии, наборе сетевых данных, геометрической сети или наборах данных Terrain.
- Поскольку вы редактируете источник данных напрямую, то после сохранения изменений вы не можете произвести отмену (undo) или повтор (redo) отдельного изменения в случае допущения ошибки. Единственный способ отменить все изменения, сделанные после последнего сохранения - это остановить сеанс редактирования и выйти без сохранения изменений.
- Каждая транзакция должна быть начата и завершена в рамках одной сессии редактирования. Сеанс редактирования может длиться только ограниченное время. Скорее всего, вам придется завершить его через несколько часов, чтобы выйти из системы в конце рабочего дня.
- При неверсионном редактировании нет выявления конфликтов. Если один пользователь обновляет пространственный объект и сохраняет, и другой пользователь редактирует этот же объект и сохраняет, последнее обновление отменяет первое.
Для получения более подробной информации см.Введение в работу с неверсионными данными.
Работа с данными с поддержкой версий
База геоданных расширяет возможности стандартной транзакции СУБД, позволяя нескольким параллельным состояниям базы данных, называемых версиями, существовать в одно и то же время. Каждая версия может представлять состояние текущей работы, например, состояние проекта или набор рабочих нарядов, а также работы, которая может порождать наличие нескольких подключений к базе данных и длиться при необходимости в течение нескольких недель или даже месяцев. Версии позволяют вам управлять произведенными, настоящими и предполагаемыми изменениями данных в одной и той же базе геоданных.
Для управления произведенными изменениями вы сохраняете все изменения данных в отдельные архивные таблицы (archive tables). Вы можете хранить эти изменения сколько вам нужно, позволяя пользователям видеть, как выглядела база данных в некоторый момент времени ранее. Данная функция называется архивированием, и она уже встроена в ArcGIS, то есть вам не нужно ничего разрабатывать. При включении этой функции изменения версии DEFAULT, которая обычно используется как публикуемая версия базы данных, архивируются автоматически.
Для управления текущими изменениями редакторы могут изменять их частные версии базы геоданных, так чтобы другие пользователи не могли видеть результаты незавершенной работы. Когда вы редактируете версию данных, вы не используете блокировки. Следовательно, вы обеспечиваете возможность максимального параллелизма, при котором другие пользователи могут считывать и редактировать те же самые данные, которые вы в настоящий момент времени изменяете:таким образом, вы не блокируете доступ к базе данных для других пользователей. Как только редактор завершил его или ее редактирования, он или она может добавить их в публикуемую версию.
Для управления предполагаемыми изменениями вы можете разработать сценарий или выполнить анализ по алгоритму «а что если» в рамках какой-то версии базы данных. Данный сценарий может управляться в виде отдельной единицы изменений, которая растягивается на несколько сессий редактирования, дней, недель или даже месяцев. Вы свободно можете добавлять предполагаемые объекты, производить географический анализ и создавать карты — все это вы можете делать без оказания влияния на базу данных, к которой другие пользователи в настоящий момент времени имеют доступ. Как только изменения будут завершены и одобрены, вы сможете объединить их с остальной частью базы геоданных.
База геоданных может иметь неограниченное количество версий. Версии могут быть структурированы по различным параметрам конфигурации и поддерживать различные типы рабочих потоков. Но для простоты управления базами геоданных рекомендуется поддерживать плоское дерево версий, или чтобы несколько редакторов одновременно редактировали версию DEFAULT (по умолчанию).
Для поддержки этих функциональных возможностей ArcGIS не производит дублирования данных. Вместо этого он оставляет каждый класс пространственных объектов и таблицу в его исходном виде, а записывает любые изменения в таблицы, называемые таблицами изменений (дельта-таблицами). Дельта-таблицы включают в себя таблицу добавлений для вставок и обновлений и таблицу удалений для удалений. Каждый раз, когда вы обновляете или удаляете запись в какой-то версии, в одну или в обе эти таблицы происходит добавление строк. Когда вы производите запрос или отображаете класс пространственных объектов или таблицу в версии, ArcGIS объединяет соответствующие строки из таблиц изменений и исходной таблицы для отображения целостного представления данных.
Версионные таблицы нуждаются в периодическом обслуживании, которое может быть выполнено администратором баз данных. По мере того, как база геоданных будет редактироваться, таблицы изменений (дельта-таблицы) увеличатся в размерах и будут влиять на производительность в отображении данных и обработки запросов. Для поддержки производительности администратор баз данных может иногда производить сжатие версионной базы данных - операцию, которая удаляет избыточную информацию из дельта-таблиц. Версионные базы данных должны сжиматься каждый раз по окончании периода высокой активности работы в базе данных, например, по завершении рабочей смены или после загрузки новых данных. Процесс сжатия может быть запущен во время того, как другие пользователи подключены к базе данных и используют ее.
ArcGIS может управлять лежащими в основе таблицами изменений (дельта-таблицами), которые обеспечивают работу версий, несколькими способами:
- Сохраняя все изменения в таблицы изменений (delta table), независимо от версии
- Сохраняя все версионные редактирования версии не-DEFAULT в таблицы изменений, а все версионные редактирования версии DEFAULT в основные (базисные) таблицы
Первый способ был разработан для поддержки исключительно приложений ArcGIS. Второй способ удобен при наличии необходимости в поддержке данных средствами как приложений ArcGIS, так и приложений третьих лиц.
Поддержка данных исключительно с помощью приложений ArcGIS
При работе в среде, в которой необходимо производить обслуживание данных исключительно с помощью приложений ArcGIS, самым лучшим решением для управления версиями будет сохранение всех изменений в таблицы изменений (дельта-таблицы). Это позволит вам извлечь максимум пользы из функциональных возможностей базы геоданных, включая архивирование, создание реплик и возможность редактирования геометрических сетей и топологий.
Для включения работы данной стратегии для класса пространственных объектов или таблицы вам необходимо зарегистрировать данные как версионные, не включая опцию перемещения изменений в основную таблицу (base table). Каждый раз, когда вы будете сохранять изменения в наборе данных, зарегистрированном таким образом, изменения будут сохраняться в дельта-таблицах (delta tables). При использовании данного подхода прямой доступ к исходным таблицам невозможен — пользователи всегда имеют доступ к версии данных.
На расположенном ниже рисунке изображена конфигурация, при которой данные полностью управляются посредством использования версий. Для изменений данных редакторам необходимо использовать ArcGIS или другое приложение Esri. Не-ГИС приложения могут получить доступ к публикуемой или любой другой версии при условии, что они могут работать с версионными представлениями.
По причине того, что для поддержки версий необходимо наличие дельта-таблиц и других таблиц, приложения, которые были написаны для обеспечения прямого доступа к данным в СУБД без использования библиотек программного обеспечения ESRI, не будут иметь нужных функциональных возможностей чтения версий. В ArcGIS предусмотрены версионные представления, которые позволяют таким приложениям читать версию с помощью SQL. Версионные представления могут работать как с таблицами, так и с классами объектов. Доступ к атрибутам геометрии классов объектов с помощью версионного представления требует использования типов геометрии SQL, которые полностью поддерживаются ArcGIS.
Данный подход имеет следующие преимущества:
- У вас есть возможность отмены или повтора операции, пока вы редактируете данные.
- Отсутствие блокировок обуславливает появление конфликтов редактирования. ArcGIS предоставляет возможность легкого обнаружения, согласования (reconcile) и разрешения (resolve) конфликтов.
- Архивирование изменений производится автоматически, имеется возможность выполнения запроса на вывод сведений о том, как база данных выглядела в определенный момент времени.
- Пользователь может редактировать объекты в геометрической сети, наборе сетевых данных или топологии.
- Существует возможность синхронной работы двух и более географически распределенных офисов с синхронизированными копиями базы геоданных. Эти офисы должны периодически отсылать их изменения друг другу, чтобы каждый офис имел актуальное содержание базы геоданных. В рамках терминологии ArcGIS такая функциональная возможность называется созданием реплик баз геоданных.
- Для мобильных пользователей, которые отключены от сети, существует возможность редактирования части базы геоданных на ноутбуке или портативном устройстве в полевых условиях. По возвращении пользователей в офис они производят перенос их изменений в базу геоданных. В рамках терминологии ArcGIS такая функциональная возможность также называется созданием реплик баз геоданных.
Возможные области применения:
- Проекты, для которых требуется хранение архивных данных и организация доступа к ним.
- Проекты, требующие выполнения анализа по алгоритму «а что если»: создайте новый дизайн в отдельной версии. Если проект будет одобрен, то вы сможете произвести его объединение с остальной частью базы данных. Если он не будет одобрен, то вы сможете от него отказаться.
- Проекты, имеющие специфические требования к обеспечению качества: соберите изменения данных, например пакетные операции импорта, в версию, которая изолирована от других пользователей базы данных. Произведите тестирование и одобрение изменений до того, как объединить их с публикуемой версией базы данных.
- Проекты, в рамках которых производится разделение работы по функциональному или географическому признаку: например, проект проектирования и постройки нового торгового центра может иметь определенные этапы постройки, разделяемые на восточную и западную части, или подразделяемые по типу строительных работ, например стройка, проведение коммуникаций или дизайн ландшафта. Каждая единица работы будет производиться в отдельной версии; по мере того, как работа с версией будет завершаться, ее содержание будет закрепляться в публикуемой версии базы данных.
- Проекты, работа в которых продвигается посредством прохождения установленных или регламентируемых групп этапов, в силу чего для каждого из них требуется проектировочное, административное или юридическое одобрение до перехода к следующей стадии: рабочие потоки для этих проектов могут управлять каждым этапом в виде отдельной версии. Могут быть созданы версии первоначального проекта или предполагаемой версии, одобренной версии и версии для этапа строительства. По мере продвижения и развития проекта происходит обзор каждого этапа и его одобрение, затем его версия заменяется последующей версией, до тех пор, пока последний этап не будет выполнен и завершен.
- Проекты, к которым предъявляются требования постоянного аудита: вы можете хранить постоянный архив, к которому могут производиться запросы на предмет изменений.
- Проекты, в которых географически распределенным офисам необходимо синхронно работать над одной и той же базой геоданных: для них необходимо обеспечить возможность периодической синхронизации копий данных.
- Проекты, в которых задействованы полевые бригады, обновляющие данные с мобильными компьютерами.
- Проекты, в которых задействованы разработчики программного обеспечения, тестирующие SQL-выражения и логику приложений на их собственной частной версии базы данных.
Версии имеют множество преимуществ, но тем не менее имеют и некоторые ограничения:
- Приложения третьих сторон должны быть адаптированы для использования версионных представлений до того, как они смогут считывать данные.
- При работе с версионными данными на использование активных моделей поведения СУБД, например, на уникальные ограничения и триггеры, имеются ограничения. Это происходит по причине того, что вставки и обновления создают новые строки в дельта-таблицах вместо вставок и обновлений в базовых таблицах.
Обслуживание данных с помощью ArcGIS и других приложений
При работе в разнородной среде вычислительных средств, когда у вас имеется большое число департаментов со своими различными приложениями, которые имеют доступ к одной и той же базе данных, вам может понадобиться обеспечить поддержку работы как приложений ArcGIS, так и приложений третьих сторон. Приведем пример: у вас имеется один департамент, который обслуживает географические данные в базе данных с помощью приложений ArcGIS, и другой департамент, который поддерживает записи пользователей в той же базе данных с помощью пользовательского приложения. Для пользовательского приложения необходимо применение ограничений и триггеров СУБД по мере произведения транзакций, однако эти приложения могут не работать с версионными таблицами. В то же время другому департаменту необходимо редактировать географические данные в его собственной изолированной версии, не разделяя свои редактирования до тех пор, пока они не будут завершены и одобрены.
Учитывая эти требования, ArcGIS позволит вам производить версионное редактирование для класса пространственных объектов или таблицы, сохраняя возможность разделения этих редактирований с другими приложениями. Для включения этой возможности для класса пространственных объектов или таблицы вам необходимо зарегистрировать эти данные как версионные, включив опцию перемещения изменений в основную (базисную) таблицу. Данная опция будет доступна в диалоговом окне регистрации.
При регистрации данных таким способом версии будут работать точно так же, как было описано при предыдущем подходе: изменения сохраняются в дельта-таблицах. Исключением является лишь версия DEFAULT. Каждый раз, когда вы будете сохранять редактирования в версии DEFAULT, либо напрямую редактируя ее, либо производя объединение изменений из другой версии, эти редактирования будут сохраняться в основных (базисных) таблицах. Правки не будут оставаться в дельта-таблицах, как в том случае, когда опция перемещения изменений в базу данных не выбрана.
Это позволит всем приложениям работать над одной и той же базой данных.
- Приложения, написанные без использования программного обеспечения Esri, будут продолжать иметь возможность доступа к данным и их изменения с помощью стандартных транзакций, даже если они редактируются в версии DEFAULT или другой версии одновременно.
- Каждый раз, когда ArcGIS или приложение, написанное с использованием компонентов ArcObjects, сохранит изменения в версию DEFAULT или произведет объединение изменений в версию DEFAULT, будут применены любые уникальные индексы, ограничения и триггеры, которые были определены для данных с помощью СУБД.
- Когда одно приложение изменяет данные, эти изменения могут стать немедленно доступны для любого другого приложения, который имеет доступ к этим данным. Поскольку изменения, производимые для версии DEFAULT, не сохранятся в дельта-таблицах, то нет необходимости в адаптации приложений третьих сторон для работы с версионными представлениями, так чтобы они могли считывать эти таблицы.
Возможное применение
- Проекты, для которых необходимо редактирование данных средствами ArcGIS и других приложений — происходит установка рабочего потока, где другие приложения имеют доступ и изменяют непространственные данные в базе данных с помощью стандартных транзакций СУБД в то же время, как другие пользователи работают над конкретными версиями тех же данных, выполняя транзакции сравнительно большой длительности, которые изолированы от всех других пользователей базы данных до их закрепления в версии DEFAULT.
- Пример тех же самых потенциальных приложений, когда вы обслуживаете данные исключительно с помощью ArcGIS:
- Проекты, требующие выполнение анализа по алгоритму «а что если»
- Проекты, имеющие специфические требования к обеспечения качества
- Проекты, в рамках которых производится разделение работы по функциональному или географическому признаку
- Проекты, работа в которых продвигается посредством прохождения установленных или регламентируемых групп этапов
- Проекты, в которых задействованы полевые бригады, обновляющие данные с мобильными компьютерами.
- Проекты, в которых задействованы разработчики программного обеспечения, тестирующие SQL-выражения и логику приложений.
Ограничения:
При регистрации набора данных как версионного с включением опции перемещения изменений в базу вы ограничены в способах работы с версиями.
- Вы можете редактировать только простые данные — точки, линии, полигоны, аннотации и отношения. Вы не можете редактировать класс объектов в топологии, наборе сетевых данных, геометрической сети или наборе данных terrain.
- Вы не можете производить архивацию изменений для набора данных.
- Вы не можете создавать реплики наборов данных.
- При редактировании версии DEFAULT или закреплении версии в DEFAULT у вас нет возможности разрешения конфликтов, так что вы можете перезаписать правки другого пользователя.
Более подробно см. в разделах Введение в работу с версиями и Подходы к использованию версий.