Многопользовательские базы геоданных используют таблицы файлов журнала для обслуживания списков выбранных записей. Записи вносятся в таблицы файла журнала для последующего использования приложением в следующих ситуациях:
- Клиент создает набор выборки определенного размера (100 записей в ArcMap; 1000 записей, если ObjectIDs запрашивается из сервиса объектов).
- Вы согласовываете или отправляете сообщения в версионную базу геоданных.
- Клиентское приложение проверяет данные для автономного редактирования.
Существуют три опции файла журнала: совместно используемый, сеансовый, а также пулы сеансовых файлов журнала. Каждый описан в отдельных разделах данной темы.
Базы геоданных в PostgreSQL используют общие файлы журнала по умолчанию, но вы можете изменить настройки таблицы файла журнала с помощью инструмента геообработки Настроить таблицы файла журнала базы геоданных (Configure Geodatabase Logfile Tables).
Совместно используемые файлы журнала
Совместные файлы журнала являются общими для всех сеансов подключения одного пользователя. При подключении нескольких пользователей с использованием одной учетной записи, все такие сеансы добавляют и удаляют записи из одной таблицы данных файла журнала.
В каких случаях нужны совместно используемые файлы журнала
Используйте совместные файлы журнала, если каждый клиент и пользователь подключается с отличной учетной записью пользователя базы данных.
В каких случаях совместное использование файлов журнала нецелесообразно
Вы можете не захотеть использовать совместные файлы журналов в том случае, если у вас имеется множество подключений с одним именем пользователя, например, при публикации сервиса объектов на ArcGIS Server, который будет генерировать множественные подключения с одним именем пользователя. Если многие из ваших пользователей будут запускать атрибутивные запросы к одному и тому же сервису объектов, то это может привести к конкуренции и увеличению времени ожидания для таблицы SDE_LOGFILE_DATA. В этом случае вы можете использовать файлы журналов на основании сеансов.
Таблицы, созданные для совместных файлов журнала
Таблицами файла журнала, используемыми для данной опции, являются SDE_LOGFILES и SDE_LOGFILE_DATA. Они создаются в схеме подключения пользователя при его первом превосходящем порог выборе.
В SDE_LOGFILES хранится информация о каждой создаваемой выборке (файле журнала). Столбцы logfile_name и logfile_id в данной таблице уникальным образом идентифицируют имя файла журнала, а столбец logfile_id связывает запись файла журнала с таблицей SDE_LOGFILE_DATA. Таблица SDE_LOGFILE_DATA содержит logfile_data_id и идентификатор объекта для выбранных записей.
Все записи удаляются как только происходит очистка выборки с целью недопущения чрезмерного роста таблицы SDE_LOGFILE_DATA. Таблица SDE_LOGFILES усекается после окончания сеанса. Таблицы SDE_LOGFILE_DATA и SDE_LOGFILES остаются в схеме пользователя.
Права для использования совместных файлов журнала
Так как таблицы файла журнала принадлежат подключающемуся пользователю, этот пользователь должен быть владельцем схемы, в которой он создает таблицы. В базах геоданных имя пользователя и схемы должны совпадать. Если у пользователя нет схемы с тем же именем, в которой могут создаваться таблицы, при выполнении операции, требующей работы с таблицами файлов журналов, таких как начало или завершение сеанса редактирования и создания выбранного набора, большего размера, чем разрешено данному клиентскому приложения, будет возвращено сообщение об ошибке.
Для работы с совместно используемыми файлами журнала в PostgreSQL необходимы следующие разрешения:
- CONNECT
- USAGE для собственной схемы пользователя
- CREATE для собственной схемы пользователя
Помните, что предоставление права AUTHORIZATION в схеме автоматически присваивает права USAGE и CREATE. Однако если вы не хотите, чтобы пользователь создавал таблицы, не предоставляйте AUTHORIZATION. Вместо этого предоставьте схемам права USAGE и CREATE, поскольку вы можете отозвать право CREATE после создания таблиц файлов общего журнала. Право USAGE должно остаться, чтобы пользователь мог записывать в таблицы файлов журнала в будущем.
Например, архитектор Ян может только выбрать данные из базы геоданных для выполнения анализов, относящихся к его задаче. Таким образом, он будет пользователем с правами "только для чтения". Однако, если пользователь Ian захочет создать таблицы SDE_LOGFILES и SDE_LOGFILE_DATA, необходимые для хранения выбранного набора, ему потребуется авторизация в своей собственной схеме.
Вместо того чтобы предоставлять ему права на создание таблиц без ограничений, пользователь sde создает для него схему и временно предоставляет в ней права CREATE и USAGE. Пользователь sde может попросить Ian зайти в базу геоданных из ArcMap и создать выбранный набор из 101 или более объектов. Тем самым в схеме будут созданы необходимые таблицы. После создания таблиц, пользователь sde отзывает право CREATE у Яна.
Дополнительный контроль хранения данных для таблиц и индексов совместно используемого файла журнала
Существует несколько параметров под ключевым словом LOGFILE_DEFAULTS таблицы DBTUNE, управляющие способом или местом хранения таблиц файла журнала в базе данных. Вам не нужно задавать их для использования совместных файлов журнала, но вы можете задавать их в том случае, если желаете изменить способ хранения таблиц SDE_LOGFILES и SDE_LOGFILE_DATA и индексов в базе данных.
Для PostgreSQL используются следующие параметры:
- LD_INDEX_ALL
- LD_STORAGE
- LF_INDEX_ID
- LF_INDEX_NAME
- LF_STORAGE
Подробнее см. в Параметры конфигурации PostgreSQL.
Сеансовые файлы журнала
Таблицы файлов журнала на основании сеанса предназначены для отдельного сеанса и могут содержать множество выборок (файлов журнала). Каждый сеанс, для которого выполняется вход, требует набора таблиц для выборок.
В каких случаях используются сеансовые файлы журнала
Вы можете использовать файлы журналов на основании журналов в том случае, если у вас имеется множество одновременных подключений к базе геоданных с одним именем пользователя. Например, если многие сервисы ссылаются на данные в вашей базе геоданных, вы можете использовать сеансовые файлы журнала.
В каких случаях использование сеансовых файлов журнала нецелесообразно
Вы не можете использовать файлы журналов на основании сеанса в том случае, если у вас имеются пользователи с правами "только для чтения", подключающиеся к базе данных.
Таблица сеанса удаляется из схемы пользователя после окончания сеанса. Это означает, что ее необходимо повторно создать когда это необходимо; таким образом, для использования таблиц файла журнала на основании сеанса, пользователю необходимы права доступа для создания таблиц.
Таблицы, создаваемые для сеансовых файлов журнала
Создаются три таблицы: SDE_LOGFILES, SDE_LOGFILE_DATA и SDE_SESSION<SDE_ID>. SDE_LOGFILE_DATA на самом деле не используется, но создается автоматически. В таблице SDE_LOGFILES хранится информация о выборке плюс тег сеанса <SDE_ID>, добавляемый к имени таблицы SDE_SESSION. В таблице SDE_SESSION хранятся идентификатор объекта для выбранного набора и идентификатор файла журнала.
Таблицы SDE_LOGFILES и SDE_LOGFILE_DATA остаются в базе геоданных. Таблица SDE_LOGFILES усекается при отключении приложения. Таблица SDE_SESSION<SDE_ID> усекается, когда подключенное приложение удаляет файлы журнала, и удаляется в конце сеанса.
Разрешения для работы с сеансовыми файлами журнала
Файлы журнала на основании сеанса принадлежат пользователю, начинающему сеанс подключения. Это означает, что пользователю необходимы права доступа для создания требуемых объектов базы данных.
Для работы с файлами журнала по сеансам в PostgreSQL всем пользователям необходимы следующие разрешения:
- CONNECT
- AUTHORIZATION в схеме, принадлежащей пользователю (право AUTHORIZATION автоматически присваивает права USAGE и CREATE)
Дополнительный контроль хранения данных для таблиц и индексов сеансового файла журнала
Ключевое слово LOGFILE_DEFAULTS таблицы sde_dbtune имеет несколько параметров, которые управляют способом и местом хранения таблиц файлов журналов в базе данных. Чтобы использовать файлы журналов по сеансам, параметры задавать не нужно, но их можно задать, если вы хотите изменить способ хранения таблиц SDE_LOGFILES, SDE_LOGFILE_DATA и SDE_SESSION и индексов в базе данных.
Для PostgreSQL используются следующие параметры:
- LD_INDEX_ALL
- LD_STORAGE
- LF_INDEX_ID
- LF_INDEX_NAME
- LF_STORAGE
- SESSION_INDEX
- SESSION_STORAGE
Описание этих параметров находится в разделе Параметры конфигурации PostgreSQL.
Пулы файлов журнала, принадлежащие пользователю sde
Администратор базы геоданных может создать пул сеансовых файлов журнала, который может быть откреплен и использован другими пользователями. Совместные файлы журнала не могут быть откреплены от пула файла журнала.
Использование пула файлов журнала необходимо для того, чтобы избежать необходимости наделения пользователей правами доступа, необходимыми для создания объектов в базе данных.
В каких случаях следует использовать пулы файлов журнала
Вы будете использовать пулы фалов журнала в том случае, если не можете дать пользователям возможность создания таблиц файлов журнала в их собственных схемах. При этом пользователям все еще нужны права доступа для создания сеансов или подключения к базе данных.
В каких случаях использование пулов файлов журнала нецелесообразно
В общем случае использование пулов файлов журналов требует больших затрат на обслуживание, так как вам требуется оценить количество необходимых таблиц файла журнала, выполнять изменение размера пула или количества используемых пулов. Помните, что большой пул файла журнала или большое количество пулов файлов журнала может негативно отразится на производительности.
Таблицы, созданные для пулов файлов журнала
Вы задаете количество таблиц SDE_LOGPOOL_<table_ID>, которые создает инструмент Настроить таблицы файла журнала базы геоданных (Configure Geodatabase Logfile Tables) в схеме пользователя sde. Например, если вы укажите 5 таблиц, то в схеме sde будут созданы следующие таблицы:
- SDE_LOGPOOL_1
- SDE_LOGPOOL_2
- SDE_LOGPOOL_3
- SDE_LOGPOOL_4
- SDE_LOGPOOL_5
В дополнительную таблицу схемы sde, SDE_LOGFILE_POOL, записывается SDE_ID сеанса и ID таблицы. <table_ID> в имени таблицы SDE_LOGPOOL соответствует значению столбца table_ID таблицы SDE_LOGFILE_POOL.
Каждый сеанс, требующий таблицу файла журнала, добавляет одну новую запись в таблицу SDE_LOGFILE_POOL, а сеанс выделяется для одной из таблиц SDE_LOGPOOL_<table_ID>. Если дополнительные файлы журнала создаются в одном сеансе, например, вторая выборка из 300 записей создается в одном сеансе ArcMap, то в таблицу SDE_LOGPOOL добавляются новые файлы журнала (выборка).
Когда файлы журнала очищаются, происходит усечение таблицы SDE_LOGPOOL, открепляемой для сеанса. Например, при очистке второй выборки в сеансе ArcMap, из таблицы SDE_LOGPOOL удаляются 300 записей, но записи первой выборки остаются. Когда файлы первой выборки очищаются, данные записи удаляются из таблицы SDE_LOGPOOL.
Когда файл журнал (выборка) очищается, происходит усечение соответствующей таблицы SDE_LOGPOOL.
Права доступа, необходимые для пулов файла журнала
Для использования таблиц файлов журнала в пуле, пользователям необходима только возможность подключения к базе данных и возможность использования объектов в схеме пользователя sde. Например, необходимы следующие разрешения:
- CONNECT
- USAGE для собственной схемы пользователя
Дополнительный контроль хранения данных для пулов файла журнала
Ключевое слово LOGFILE_DEFAULTS таблицы sde_dbtune имеет всего несколько параметров, которые управляют способом хранения таблиц SDE_LOGPOOL<SDE_ID> и их индексами.
Корпоративные базы геоданных в PostgreSQL используют параметры LD_STORAGE и LD_INDEX_ALL в таблице sde_dbtune для задания способа хранения таблиц SDE_LOGPOOL<SDE_ID> и их индексов. Эти два параметра также управляют хранением таблицы и индекса SDE_LOGFILE_DATA. Описание этих параметров находится в разделе Параметры конфигурации PostgreSQL.
Вам не нужно задавать их для использования пулов таблиц файла журнала, но вы можете задавать их в том случае, если желаете изменить способ хранения таблиц SDE_LOGPOOL<SDE_ID> и индексов в базе данных.