При подключении вами к многопользовательской базе геоданных из клиента ArcGIS или через веб-сервис ArcGIS for Server вы взаимодействуете с наборами данных, которые были вами или другими пользователями баз данных добавлены в базу геоданных. Для отслеживания этих данных и имплементации возможностей базы геоданных многопользовательские базы геоданных используют системные таблицы.
Системные таблицы и их содержание не следует изменять другими средствами, кроме программного обеспечения ArcGIS или SDK. Однако вы можете просматривать содержание системных таблиц через SQL.
Основные системные таблицы
Основные системные таблицы базы геоданных определяют поведение базы геоданных, хранят информацию о базе геоданных и отслеживают данные, хранящиеся в ней.
Когда вы выполните запрос к базе данных PostgreSQL, содержащей базу геоданных, вы увидите следующие основные системные таблицы в пользовательской схеме sde:
- gdb_itemrelationships
- gdb_itemrelationshiptypes
- gdb_items
- gdb_itemtypes
- gdb_replicalog
- gdb_tables_last_modified
- sde_archives
- sde_column_registry
- sde_compress_log – создается при первом сжатии базы геоданных.
- sde_coordinate_systems
- sde_dbtune
- sde_geometry_columns
- sde_layer_locks
- sde_layers
- sde_lineages_modified
- sde_locators
- sde_logfile_pool
- sde_metadata
- sde_mvtables_modified
- sde_object_ids
- sde_object_locks
- sde_process_information
- sde_raster_columns
- sde_server_config
- sde_spatial_references - хранится в схеме public, а не в схеме sde.
- sde_state_lineages
- sde_state_locks
- sde_states
- sde_table_locks
- sde_table_registry
- sde_tables_modified
- sde_version
- sde_versions
В базе данных есть следующие больше не использующиеся таблицы. Они могут быть удалены в будущих версиях.
- sde_layer_stats
- sde_xml_columns
- sde_xml_index_tags
- sde_xml_indexes
Таблицы, реализующие функциональность многопользовательской базы геоданных
Информация о некоторых функциях базы геоданных хранится только в основных системных таблицах. Например, в основных системных таблицах хранится информация о следующих функциях, причем при включении этих функций для данных пользователя никаких дополнительных таблиц в базе данных не создается:
- Домены – хранятся в системной таблице gdb_items. Поле в системной таблице gdb_itemtypes определяет объект в качестве домена.
- Реплики базы геоданных отслеживаются в базе данных в системных таблицах базы геоданных gdb_items, gdb_itemrelationships, gdb_itemtypes и gdb_replicalog
- Классы отношений – хранятся в системных таблицах gdb_items и gdb_itemrelationships.
Однако функциональность базы геоданных, описанная в следующих разделах, создает дополнительные внутренние таблицы при включении или использовании этого функционала.
Архивы базы геоданных
С помощью архивации базы геоданных можно вести историю операций с данными. Время транзакции представляет собой момент времени, когда объект был добавлен, удален или обновлен в базе данных.
Когда для таблицы включено архивирование, создается класс архива. Архивный класс - это копия бизнес-таблицы, которая содержит все те же поля, а также три новых поля: gdb_from_date, gdb_to_date и gdb_archive_oid. При включении вами для таблицы и класса объектов, участвующих в традиционной версии, запись также добавляется в системную таблицу sde_archives. В этой записи сохраняются регистрационные ID таблицы, для которой было включено архивирование и связанная с ней таблица класса архива.
Имя таблицы класса архива совпадает с оригинальным именем рабочей таблицы; к нему добавляются символ подчеркивания и буква H. Например, если для класса объектов buildings включено архивирование, создается класс архива buildings_H. Эта таблица архивного класса хранится в той же схеме, что и бизнес-таблица.
Версии
При регистрации класса объектов или таблицы для их включения в версии будут созданы две таблицы, в которых будут отслеживаться изменения данных: таблица добавлений и таблица удалений. Все вместе они называются дельта-таблицами.
Таблица добавлений (a_<registration_id>) содержит информацию о каждой добавленной или обновленной записи (объекте) в версионной бизнес-таблице. Для определения добавленных или измененных записей в данном состоянии базы данных к ней выполняется запрос.
Таблица удалений (d_<registration_id>) поддерживает информацию о каждой удаленной или обновленной строки в версионной таблице. К этой таблице выполняется запрос определения удаленных или измененных в определенном состоянии базы данных строках. При удалении строки запись не удаляется из базы данных; она помечается как удаленная и никогда не возвращается при последующих запросах к базе данных.
Значение registration_id в именах таблицы добавлений и таблицы удалений - значение версионной таблицы в системной таблице sde_table_registry.
Эти таблицы создаются в той же пользовательской схеме, что и таблица или класс пространственных объектов, которые зарегистрированы как версионные.
Помимо дельта-таблиц, основные системные таблицы, отслеживающие версионные таблицы и изменения, - sde_states, sde_state_lineages, sde_mvtables_modified sde_versions.
Таблицы ключей
Таблицы ключей используются клиентами ArcGIS для улучшения производительности запросов. Таблицы ключей используются для сохранения списка выбранных строк в случае, когда клиент ArcGIS выполняет запрос связи в базе геоданных, объединяющий таблицы с помощью атрибутов, которые относятся к типам Целое, Число, Дата или Строка. Они размещают объединения, используя атрибуты, отличные от поля Object ID.
Таблицы ключей в базе геоданных отсутствуют до тех пор, пока не будет выполняться одна из следующих операций:
- Выбор более 99 записей класса объектов на карте в ArcGIS Pro или ArcMap, и класс объектов включен в класс отношений.
- В ArcGIS Pro или ArcMap открыта таблица атрибутов класса объектов, участвующего в классе отношений и выбрана связанная таблица.
- Начат сеанс редактирования в ArcMap.
Одна таблица ключей создается, как глобальная временная таблица, на одну сессию одного соединения. Поскольку эта таблица временная, она удаляется, когда пользователь отключается от базы геоданных. Однако, можно заметить, что временные схемы, которые создаются PostgreSQL для хранения этих таблиц, остаются. Они имеют такие имена, как pg_temp_3.
Формат имен таблицы ключей:
keyset_<process_id>, где <process_id> - идентификационный номер процесса пользовательской сессии, во время которой была создана таблица ключей.
Таблицы файлов журнала
Таблицы файлов журнала используются клиентами ArcGIS для увеличения производительности запросов и хранят списки выбранных строк. Таблицы файлов журнала используют соединения по атрибутам Object ID.
В базах геоданных в PostgreSQL по умолчанию используются общие таблицы файлов журнала. В этом типе конфигурации файлов журнала создается две таблицы - sde_logfiles и sde_logfile_data - в схеме пользователя, выполняющего действие, которое требует таблиц файла журнала. После создания эти таблицы остаются в базе геоданных; однако все записи файлов журнала удаляются при удалении приложением всех его файлов журнала.
В следующем списке указаны таблицы файлов журнала, которые вы увидите в базе данных, если вы измените тип таблиц файлов журнала, используемых базой геоданных:
- Таблицы файлов журнала по сеансам - sde_logfiles, sde_logfile_data и sde_session<sde_id>. Данные таблицы создаются в схеме пользователя, чьи действия в ходе сеанса вызвали создание таблиц. Будучи однажды созданными, таблицы sde_logfiles и sde_logfile_data остаются в базе данных. sde_logfile_data никогда не заполняется, если вы используете таблицы файлов журнала по сеансам. Таблица sde_logfiles усекается после окончания сеанса пользователя. Таблица sde_session<sde_id> усекается, если подключающемуся приложению больше не требуются записи файла журнала, а после отключения сеанса таблица удаляется.
- Пул таблиц файлов журнала - эта реализация файла журнала использует основную системную таблицу sde_logfile_pool и создает таблицы sde_logpool_<table_Id> для хранения выборок на основе Object ID объектов. Администратор базы геоданных задает число создаваемых таблиц sde_logpool_<table_Id> при настройке базы геоданных на использование этого типа таблиц файлов журнала. Все эти таблицы принадлежат пользователю sde.