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_source
がREFRESH
になっているときにGraphChangeSet.buildNewSnapshot()
をコールするなど)、操作は無効となり、例外がスローされます。
親トピック: グラフのバージョニング