トランザクションWebサービスの操作の説明

ここでは、Webサービスの操作のロジックと、そのリクエストおよびレスポンスの構造について説明します。

操作の説明

Webサービスの操作のロジックを次に示します。
  • 外部トランザクションが開始する前に、索引のトランザクション前のバージョンが使用可能です。これは索引の最後の発行済バージョンと呼ばれます。
  • startOuterTransaction操作が発行されると、外部トランザクションが開始されます。このトランザクションは、内部トランザクションをカプセル化するため、外部トランザクションと呼ばれます。一度に1つの外部トランザクションのみ実行できます。

    startOuterTransaction操作でトランザクションのIDを指定できます。指定しない場合、Dgraphプロセスはレスポンスで一意の外部トランザクションIDを発行します。

    外部トランザクションが進行中の間、外部トランザクションIDを参照する索引への更新リクエストは外部トランザクション内で処理されます。これらの更新は、データ・インジェストWebサービス、構成Webサービス、バルク・ロード・インタフェースなど、サーバーにリクエストを発行できる任意の使用可能なインタフェースを通じて行うことができます。IDを参照しないすべてのインタフェース(バルク・ロードを除く)からの更新リクエストは、外部トランザクションがコミット(またはロールバック)されるまで待機し、索引の発行済バージョンに基づいて計算されます(外部トランザクションの進行中は、IDを指定しないバルク・ロード・インタフェースからのリクエストは拒否されます)。

  • 外部トランザクションが開始すると、索引ファイルが内部的に更新されます。索引の内部バージョンは、外部トランザクション内の(IDを参照する)リクエストを修飾するために使用可能になることがあります。これらのバージョンをトランザクション・バージョンと呼びます。
  • 外部トランザクションの継続期間中、DgraphはトランザクションIDを指定している更新問合せにのみ応答します。これらの更新問合せは、トランザクションがコミットされるまで発行されない索引のトランザクション・バージョンに対して応答されます(このトランザクション・バージョンは、この時点までに外部トランザクション内で発生した索引に対する最新の書込みを反映します。)すべての非更新問合せは、索引の最後の発行済バージョン(IDを指定しない場合)またはトランザクション・バージョン(IDを指定する場合)に対して応答されます。
  • 外部トランザクションは、トランザクションWebサービスcommitOuterTransaction操作でコミットされます。
  • トランザクションをコミットすると、そのバージョンの索引が発行されます。キューで待機していた(そしてIDを指定しなかった)更新リクエストは、このバージョンに対して処理されます。
  • 外部トランザクションのコミットに失敗すると、そのトランザクションはオープンのままになります。コミットに失敗した外部トランザクションをコミットまたはロールバックするまで、別の外部トランザクションを開始できません。コミットまたはロールバック操作を手動で発行して、データ・ドメインのDgraphプロセスを再起動せずに、失敗したトランザクションをリカバリできます。(この文には例外が1つあります。Dgraphの失敗が原因で外部トランザクションがコミットできない場合、そのトランザクションは適用されず、コミットやロールバックの必要はありません)。

    変更のコミットとロールバックに失敗したトランザクションを手動で終了するには、この外部トランザクションのIDを指定して、rollBackOuterTransaction操作を発行できます。トランザクションをロールバックした場合、IDを指定せず、キューで待機していた更新リクエストは、トランザクションが正常にロールバックされた後で処理されます。

    トランザクションをサポートするコネクタの詳細は、Oracle Endeca Information Discovery Integratorユーザーズ・ガイドを参照してください。

リクエスト

Webサービスへの入力は、使用される操作によって決まり、トランザクションの開始、コミット、ロールバック、または外部トランザクションIDのリストの操作を含めることができます。

startOuterTransaction操作では、トランザクションIDを指定できます。指定されていない場合、DgraphプロセスはIDを自動的に発行し、それをレスポンスで返します。また、listOuterTransaction操作を使用してデータ・ドメインで実行するDgraphからIDを取得できます。

レスポンス

トランザクションWebサービスへのレスポンスは、各操作が成功したかどうかを示します。

いずれかの操作が成功しない場合は、Webサービス・トランザクション全体がSOAPフォルトを返し、操作はどれも適用されません。