Многопользовательские базы геоданных используют таблицы файлов журнала для обслуживания списков выбранных записей. Записи вносятся в таблицы файла журнала для последующего использования приложением в следующих ситуациях:
- Клиент создает набор выборки определенного размера (100 записей в ArcMap; 1000 записей в ArcGIS Pro; 1000 записей, если ObjectIDs запрашивается из сервиса объектов).
- Вы согласовываете или отправляете сообщения в версионную базу геоданных.
- Клиентское приложение проверяет данные для автономного редактирования.
Таблицы файла журнала хранят идентификаторы ObjectID выбранных объектов, что позволяет повторно отображать эти объекты. Это позволяет быстрее анализировать и обрабатывать информацию.
Существуют три опции файла журнала: совместно используемый, сеансовый, а также пулы сеансовых файлов журнала. Каждый описан в отдельных разделах данной темы.
Базы геоданных на SQL Server используют сеансовые файлы журнала, создаваемые по умолчанию во временной базе данных (tempdb). Это рекомендуемая опция, которая подходит для большинства случаев. Однако если вы хотите изменить настройку, обратитесь к разделу Изменение настроек таблицы файла журнала.
Сеансовые файлы журнала
Таблицы файлов журнала на основании сеанса предназначены для отдельного сеанса и могут содержать множество выборок (файлов журнала). Каждый сеанс, для которого выполняется вход, требует набора таблиц для выборок.
В каких случаях используются сеансовые файлы журнала
Вы определенно захотите использовать их, если ваша база геоданных хранится в SQL Server. В локальных базах данных SQL Server можно создавать сеансовые таблицы файла журнала в базе данных tempdb. Это означает, что вам не нужно управлять никакими таблицами в базе геоданных, объем регистрации транзакций минимален, и не требуется выдавать каждому пользователю базы данных разрешение CREATE TABLE. Поскольку эта настройка является стандартной для баз геоданных в локальных базах данных SQL Server, для использования этой опции файлов журнала не требуется ничего менять.
Таблицы, создаваемые для сеансовых файлов журнала
При стандартной настройке SQL Server, в tempdb создается одна таблица в формате ##SDE_SESSION<SDE_ID >_<DBID>. <SDE_ID> – это уникальный идентификатор сеанса из таблицы SDE_process_information. <dbid> – идентификатор базы данных из SQL Server. Эта таблица усекается при удалении подключенным приложением файлов журнала и удаляется в конце сеанса. Помните, что вы не можете видеть временные объекты в Object Explorer в Management Studio.
При создании таблиц сеансовых файлов журнала непосредственно в базе геоданных (не в tempdb), создаются три таблицы: 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> усекается, когда подключенное приложение удаляет файлы журнала, и удаляется в конце сеанса.
Настройки управления хранением таблиц и индексов сеансовых файлов журнала
Ключевое слово LOGFILE_DEFAULTS таблицы sde_dbtune имеет несколько параметров, которые управляют способом и местом хранения таблиц файлов журналов в базе данных. Чтобы использовать файлы журналов по сеансам, параметры задавать не нужно, но их можно задать, если вы хотите изменить способ хранения таблиц SDE_LOGFILES, SDE_LOGFILE_DATA и SDE_SESSION и индексов в базе данных.
Для SQL Server используются следующие параметры:
- LD_INDEX_ALL
- LD_STORAGE
- LF_CLUSTER_ID
- LF_CLUSTER_NAME
- LF_INDEX_ID
- LF_INDEX_NAME
- LF_STORAGE
- SESSION_TEMP_TABLE
Для создания таблицы сеансовых файлов журнала в tempdb параметр SESSION_TEMP_TABLE должен иметь значение 1 (истина).
Если изменить значение параметра SESSION_TEMP_TABLE на 0 (ложь), таблицы SDE_LOGFILES, SDE_LOGFILE_DATA и SDE_SESSION<SDE_ID> будут создаваться в схеме подключенного пользователя. В этом случае пользователь должен быть наделен необходимыми привилегиями.
Описание этих параметров находится в разделе Параметры конфигурации SQL Server.
Права доступа, необходимые для файлов журнала на основании сеанса
При использовании настроек SQL Server, рекомендованных для локальных баз данных, пользователям требуется только подключение к базе данных. Однако, если значение параметра SESSION_TEMP_TABLE SDE_dbtune изменено на 0, пользователям базы данных потребуются, наряду с привилегиями СONNECT, права доступа CREATE TABLE.
Совместно используемые файлы журнала
Совместные файлы журнала являются общими для всех сеансов подключения одного пользователя. При подключении нескольких пользователей с использованием одной учетной записи, все такие сеансы добавляют и удаляют записи из одной таблицы данных файла журнала.
В каких случаях нужны совместно используемые файлы журнала
Совместно используемые файлы журнала нужны только в тех случаях, когда вы не хотите создавать таблицы в tempdb, есть много одновременных сеансов, и для каждого сеанса используется индивидуальная учетная запись.
В каких случаях совместное использование файлов журнала нецелесообразно
Не следует использовать совместные файлы журнала, если вы не хотите хранить таблицы файла журнала в собственных схемах пользователей.
Таблицы, созданные для совместных файлов журнала
Таблицами файла журнала, используемыми для данной опции, являются 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 остаются в схеме пользователя.
Права доступа, необходимые для совместных файлов журнала
Так как таблицы файла журнала принадлежат подключающемуся пользователю, то пользователи должны иметь права доступа, позволяющие им создавать необходимые объекты данных. например таблицы. Это необходимо даже тогда, когда пользователь обладает доступом только для чтения базы геоданных. Если данные права доступа не назначены, то пользователь получит сообщение об ошибке при первой попытке создания выборки, размер которой превосходит пороговый размер для конкретного клиентского приложения. Однако после того, как для пользователя будут созданы таблицы SDE_LOGFILES и SDE_LOGFILE_DATA, администратор базы геоданных может отменить данные права доступа.
Например, архитектор Ян может только выбрать данные из базы геоданных для выполнения анализов, относящихся к его задаче. Таким образом, он будет пользователем с правами "только для чтения". Однако, если Ян захочет создать таблицы SDE_LOGFILES и SDE_LOGFILE_DATA в многопользовательской базе геоданных города, то ему потребуется возможность создания таблиц в базе геоданных.
Вместо того чтобы выдавать пользователю Яну разрешение на неограниченное создание таблиц, администратор базы геоданных просит Яна войти в базу геоданных и сделать выборку, размер которой превосходит порог. Администратор базы геоданных затем отменяет права Яна на создание таблиц.
Для работы с таблицами совместно используемых файлов журнала в SQL Server необходимы следующие права доступа:
- CONNECT
- CREATE TABLE
Дополнительный контроль хранения данных для таблиц и индексов совместно используемого файла журнала
Для SQL Server используются следующие параметры:
- LD_INDEX_ALL
- LD_STORAGE
- LF_CLUSTER_ID
- LF_CLUSTER_NAME
- LF_INDEX_ID
- LF_INDEX_NAME
- LF_STORAGE
Подробнее см. в Параметры конфигурации SQL Server.
Пулы файлов журнала, принадлежащие администратору базы геоданных.
Администратор базы геоданных может создать пул сеансовых файлов журнала, который может быть откреплен и использован другими пользователями. Совместные файлы журнала не могут быть откреплены от пула файла журнала.
Использование пула файлов журнала необходимо для того, чтобы избежать необходимости наделения пользователей правами доступа, необходимыми для создания объектов в базе данных.
В каких случаях следует использовать пулы файлов журнала
Вы будете использовать пулы фалов журнала в том случае, если не можете дать пользователям возможность создания таблиц файлов журнала в их собственных схемах. При этом пользователям все еще нужны права доступа для создания сеансов или подключения к базе данных.
В каких случаях использование пулов файлов журнала нецелесообразно
В общем случае использование пулов файлов журналов требует больших затрат на обслуживание, так как вам требуется оценить количество необходимых таблиц файла журнала, выполнять изменение размера пула или количества используемых пулов. Помните, что большой пул файла журнала или большое количество пулов файлов журнала может негативно отразится на производительности.
Таблицы, созданные для пулов файлов журнала
Вы задаёте количество таблиц SDE_LOGPOOL_<table_ID>, которые создаёт инструмент Настроить таблицы файла журнала базы геоданных (Configure Geodatabase Logfile Tables) в схеме администратора базы геоданных. Например, если вы укажите 5 таблиц, то в схеме администратора базы геоданных будут созданы следующие таблицы:
- SDE_LOGPOOL_1
- SDE_LOGPOOL_2
- SDE_LOGPOOL_3
- SDE_LOGPOOL_4
- SDE_LOGPOOL_5
В дополнительную таблицу схемы администратора базы геоданных, 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_LOGFILE_POOL и используется одна из таблиц SDE_LOGPOOL. Например, для одного сеанса ArcMap, вы выбираете (1) из класса объектов, хранящего информацию о виде деятельности, все эти виды деятельности имеют лицензию на приготовление пищи, и (2) из класса объектов, хранящего информацию о ливневых стоках и всех ливневых отстойниках, расположенных в пределах одного километра от организации, подающей пищу – в таблицу SDE_LOGFILE_POOL добавляются две записи: одна для выборки видов деятельности, вторая для выборки ливневых отстойников. Каждой выборке будет присвоена отдельная таблица SDE_LOGPOOL.
Когда файл журнал (выборка) очищается, происходит усечение соответствующей таблицы SDE_LOGPOOL.
Права доступа, необходимые для пулов файла журнала
Для использования таблиц файла журнала в пуле пользователям необходима только возможность подключения к базе данных и использования объектов в схеме администратора базы геоданных. Таким образом, единственным необходимым правом доступа для использования пулов таблиц файла журнала является право CONNECT.
Право CONNECT назначается по умолчанию всем пользователям; поэтому, предоставлять это право необходимо только в том случае, если вы отозвали его у группы PUBLIC.
Дополнительный контроль хранения данных для пулов файла журнала
Ключевое слово LOGFILE_DEFAULTS таблицы sde_dbtune имеет всего несколько параметров, которые управляют способом хранения таблиц SDE_LOGPOOL<SDE_ID> и их индексами.
Корпоративные базы геоданных в SQL Server используют параметры LD_STORAGE и LD_INDEX_ALL в таблице SDE_dbtune для задания способа хранения таблиц SDE_LOGPOOL<SDE_ID> и их индексов. Эти два параметра также управляют хранением таблицы и индекса SDE_LOGFILE_DATA. Описание этих параметров находится в разделе Параметры конфигурации SQL Server.
Вам не нужно задавать их для использования пулов таблиц файла журнала, но вы можете задавать их в том случае, если желаете изменить способ хранения таблиц SDE_LOGPOOL<SDE_ID> и индексов в базе данных.