エンタープライズ ジオデータベースは、ログ ファイル テーブルを使用して、選択されたレコードのリストを管理します。レコードは、アプリケーションが次のような場合に後で使用できるように、ログ ファイル テーブルに書き込まれます。
- クライアントが、特定のサイズ (ArcMap では 100 レコード、フィーチャ サービスから ObjectID が要求された場合は 1,000 レコード) の選択セットを作成する。
- バージョン対応登録されたジオデータベースにリコンサイルまたはポストする。
- クライアント アプリケーションが、切断された編集のデータをチェック アウトする。
ログ ファイルには、共有、セッションベース、セッションベース ログ ファイルのプールの 3 つのオプションがあります。このトピックでは、それぞれのオプションについて説明します。
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 とフィーチャ ID が含まれます。
すべてのレコードは、選択セットが解除されるとすぐに削除され、SDE_LOGFILE_DATA テーブルのサイズが大きくなりすぎることを防ぎます。SDE_LOGFILES テーブルは、セッションが終了するときに空になります。SDE_LOGFILE_DATA と SDE_LOGFILES は、どちらもユーザーのスキーマに残ります。
共有ログ ファイルを使用するための権限
ログ ファイル テーブルは接続中のユーザーに所有されます。そのため、接続中のユーザーはテーブルを作成できるスキーマを所有する必要があります。ジオデータベースでは、スキーマの名前は、ユーザーの名前と同じでなければなりません。ユーザーが、テーブルを作成可能な対応するスキーマを持っていない場合に、ログ ファイル テーブルを必要とする操作を実行すると、エラー メッセージが返されます。ログ ファイル テーブルを必要とする操作には、編集セッションの開始や、特定のクライアント アプリケーションの閾値サイズよりも大きい選択セットの作成などがあります。
PostgreSQL で共有ログ ファイル テーブルを使用する際に必要な権限は、次のとおりです。
- CONNECT
- ユーザー自身のスキーマに対する USAGE
- ユーザー自身のスキーマに対する CREATE
スキーマに対する AUTHORIZATION 権限を付与すると、USAGE および CREATE 権限が自動的に付与されます。ただし、ユーザーにテーブルを作成させたくない場合は、AUTHORIZATION 権限を付与しないでください。代わりに、ユーザーのスキーマに対する USAGE および CREATE 権限を各ユーザーに付与します。そうすることで、共有ログ ファイル テーブルの作成後に、CREATE 権限を取り消すことができます。ユーザーが引き続きログ ファイル テーブルに書き込めるように、USAGE 権限は残す必要があります。
たとえば、Ian は都市計画者で、ジオデータベースからデータを選択して自分の作業に関連する分析だけを実行します。したがって、Ian は読み取り専用のユーザーと考えられます。ただし、Ian は、選択セットの格納に必要な SDE_LOGFILES テーブルと SDE_LOGFILE_DATA テーブルを作成する場合、自分のスキーマに対する権限が必要になります。
sde ユーザーは、テーブルを作成する権限を無期限に Ian に付与するのではなく、Ian のスキーマを作成し、そのスキーマに対する CREATE および USAGE 権限を一時的に Ian に付与します。その後、sde ユーザーは、Ian に対して、ArcMap からジオデータベースにログインし、101 個以上のフィーチャを選択するように要求します。これによって、必要なテーブルがスキーマに作成されます。テーブルが作成された後に、sde ユーザーは Ian の CREATE 権限を取り消します。
共有ログ ファイル テーブルおよびインデックスの格納に関する制御 (オプション)
DBTUNE テーブルの LOGFILE_DEFAULTS キーワードには、ログ ファイル テーブルをデータベースに格納する方法と場所を制御するいくつかのパラメーターがあります。共有ログ ファイルを使用するためにこれらのパラメーターを設定する必要はありませんが、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> の 3 つのテーブルが作成されます。実際には、SDE_LOGFILE_DATA はこの場合は使用されませんが、自動的に作成されます。SDE_LOGFILES テーブルには、選択セットの情報と、SDE_SESSION テーブルの名前に付加されているセッション タグの <SDE_ID> が格納されます。SDE_SESSION テーブルには、選択されたセットのフィーチャ ID とログ ファイル ID が格納されます。
SDE_LOGFILES テーブルと SDE_LOGFILE_DATA テーブルは、ジオデータベースに残ります。SDE_LOGFILES テーブルは、アプリケーションの接続が切断されたときに空になります。SDE_SESSION<SDE_ID> テーブルは、接続しているアプリケーションがログ ファイルを削除したときに空になります。テーブル自体はセッションの終了時に削除されます。
セッションベース ログ ファイルを使用する権限
セッションベース ログ ファイルは、接続しているセッションを開始したユーザーによって所有されます。つまり、ユーザーには必要なデータベース オブジェクトを作成する権限が必要です。
PostgreSQL でセッションベース ログ ファイルを使用するには、すべてのユーザーが以下の権限を必要とします。
- CONNECT
- ユーザーが所有するスキーマに対する AUTHORIZATION 権限 (AUTHORIZATION 権限によって、USAGE および CREATE 権限が自動的に付与されます)
セッションベース ログ ファイル テーブルおよびインデックスの格納に関する制御 (オプション)
sde_dbtune テーブルの LOGFILE_DEFAULTS キーワードには、ログ ファイル テーブルをデータベースに格納する方法と場所を制御するいくつかのパラメーターがあります。セッションベース ログ ファイルを使用するためにこれらのパラメーターを設定する必要はありませんが、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 ユーザーが所有するログ ファイルのプール
ジオデータベース管理者は、他のユーザーがチェックアウトして使用できるセッションベース ログ ファイルのプールを作成できます。共有ログ ファイルをログ ファイル プールからチェックアウトすることはできません。
ログ ファイルのプールを使用することで、データベースにオブジェクトを作成するために必要な権限をユーザーに付与する必要がなくなります。
ログ ファイル プールを使用する場合
ログ ファイルのプールは、各自のスキーマにログ ファイル テーブルを作成する権限をユーザーに付与することができない場合に使用します。ただし、ユーザーにはセッションを作成する権限またはデータベースに接続する権限が必要です。
ログ ファイル プールを使用しない場合
全体として、ログ ファイルのプールを使用する場合は必要な保守作業が少し増えます。これは、必要なログ ファイル テーブルの数を見積もる必要があり、プールのサイズまたは使用するプールの数の調整を行うためです。ログ ファイル プールのサイズが大きい場合や、ログ ファイル プールの数が多い場合は、パフォーマンスに悪影響が出る可能性があることに注意してください。
ログ ファイル プール用に作成されるテーブル
[ジオデータベース ログファイル テーブルの構成 (Configure Geodatabase Logfile Tables)] ツールが sde ユーザーのスキーマに作成する SDE_LOGPOOL_<テーブル ID> テーブルの数を指定します。たとえば、テーブル数 5 を指定した場合、sde スキーマには次のテーブルが作成されます。
- SDE_LOGPOOL_1
- SDE_LOGPOOL_2
- SDE_LOGPOOL_3
- SDE_LOGPOOL_4
- SDE_LOGPOOL_5
sde スキーマの追加テーブル SDE_LOGFILE_POOL には、セッションの SDE_ID とテーブル ID が記録されます。SDE_LOGPOOL テーブルの名前に含まれる <テーブル ID> は、SDE_LOGFILE_POOL テーブルの table_ID 列の値に対応します。
ログ ファイル テーブルを必要とするセッションごとに、1 つのレコードが SDE_LOGFILE_POOL テーブルに追加され、各セッションは SDE_LOGPOOL_<テーブル ID> テーブルのうちのいずれかに割り当てられます。同じセッションで追加のログ ファイルが作成される場合 (たとえば、1 つの ArcMap セッションで 300 レコードの 2 つ目の選択セットが作成された場合)、新しいログ ファイル (選択セット) は同じ SDE_LOGPOOL テーブルに追加されます。
ログ ファイルが消去されるときに、セッションにチェックアウトされている SDE_LOGPOOL テーブルは空になります。たとえば、ArcMap セッションで 2 つ目の選択セットが解除された場合、SDE_LOGPOOL テーブルから 300 レコードが削除されますが、1 つ目の選択セットのレコードは残っています。1 つ目の選択セットが解除されるときに、これらのレコードが SDE_LOGPOOL テーブルから削除されます。
ログ ファイル (選択セット) を解除するときに、対応する SDE_LOGPOOL テーブルが空になります。
ログ ファイル プールに必要な権限
プールのログ ファイル テーブルを使用する場合、ユーザーに必要なのは、データベースに接続して sde ユーザーのスキーマのオブジェクトを使用できることだけです。具体的には、以下の権限が必要です。
- CONNECT
- ユーザー自身のスキーマに対する USAGE
ログ ファイルのプールの格納に関する制御 (オプション)
sde_dbtune テーブルの LOGFILE_DEFAULTS キーワードに、SDE_LOGPOOL<SDE_ID> とそのインデックスを格納する方法を制御するパラメーターは数個しかありません。
PostgreSQL のエンタープライズ ジオデータベースでは、SDE_LOGPOOL<SDE_ID> テーブルとそのインデックスの格納の設定に、sde_dbtune テーブルの LD_STORAGE および LD_INDEX_ALL パラメーターを使用します。この 2 つのパラメーターは、SDE_LOGFILE_DATA テーブルとインデックスの格納も制御します。これらのパラメーターの詳細については、「PostgreSQL のコンフィグレーション パラメーター」をご参照ください。
ログ ファイル テーブルのプールを使用するためにこれらのパラメーターを設定する必要はありませんが、SDE_LOGPOOL<SDE_ID> テーブルとインデックスをデータベースに格納する方法を変更する場合には、パラメーターを設定することができます。