26.8.1 スナップショット・ソースの構成

スナップショットは、リフレッシュChangeSetの2つのソースから作成できます。

リフレッシュは、永続データ・ソース(ファイル)から読み取られたグラフで使用できます。グラフ・サーバー(PGX)に格納されているバージョンに関してデータ・ソースが変更された場合、PgxSession.readGraphWithProperties()メソッドをコールして、手動で再度読み取ることができます。同様に、グラフに対して自動リフレッシュが設定されている場合、グラフ・サーバー(PGX)はデータ・ソースを自動的に読み取り、データ・ソースが変更されている場合は新しいスナップショットを作成します。

一方、ChangeSetは、ユーザーがPGX ChangeSet APIを介して作成および移入する、グラフに対する一連の変更です。ChangeSetを作成して必要な変更を移入した後、ユーザーは単にGraphChangeSet.buildNewSnapshot()をコールすることでグラフの新しいスナップショットを作成できます。このように、任意のソースからの変更をグラフに統合し、グラフからスナップショットを作成できます。

1つのグラフに対して許可されるスナップショットのソースは1つのみとなり、snapshots_sourceオプションを使用してグラフ構成中に選択します。これは、REFRESHまたはCHANGE_SETのいずれかに設定できます。snapshots_sourceオプションがユーザーによって明示的に設定されていない場合、次のデフォルト設定が適用されます。

  • グラフが永続データ・ソースからのものである場合、デフォルト値はREFRESHで、スナップショットはPgxSession.readGraphWithProperties()をコールすることによってのみ(または、自動リフレッシュが構成されている場合はそれを介して)作成できます。
  • グラフが一時的なものである場合、つまりグラフ・ビルダーから作成される場合、デフォルト値はCHANGE_SETです。これは、このグラフが、変更の読取り元の永続データ・ソースに基づくものではないためです。このため、一時的なグラフではCHANGE_SETのみが許容されます。
また、次の制限事項が適用されます。
  • 自動リフレッシュが有効になっている場合、スナップショットは基になるデータ・ソースの読取りによって行われるため、snapshots_sourceオプションにはREFRESHのみ指定できます。
  • ユーザーが構成とは異なる方法でスナップショットを作成しようとした場合(たとえば、グラフのsnapshots_sourceREFRESHになっているときにGraphChangeSet.buildNewSnapshot()をコールするなど)、操作は無効となり、例外がスローされます。