Java ベースの Google App Engine Web アプリケーションの場合、Oracle シーケンスに似た連続値を取得する同等の方法はありますか?
サーブレットがあるとしますSequenceServlet
。非常に単純なジョブで呼び出してみましょう。シーケンスの次の値を書き込むだけです。
Oracle を使用すると、シーケンスを作成できます。これを「my_seq」と呼び、次の SQL を実行します。
select my_seq.nextval from dual
多くのアプリケーション サーバーがあるかもしれませんが、集中型の DB は 1 つなので、これは簡単です。しかし、私の Google アプリ エンジン アプリは HRD (High Replication Datastore) を使用しています。各アプリケーション サーバーが順番に次の番号で応答するようにするにはどうすればよいですか?
2 つのクライアント リクエストがある場合、起動後に確実にしたいのは、リクエスト A がシーケンス番号 10 を取得し、リクエスト B がシーケンス番号 15 を取得したとします。
次のことが正しいことを確認したいと思います。
- リクエストAの後に確かにリクエストBが発生しました
- リクエスト A と B の間にちょうど 4 つのリクエストが発生しました
そして、これは一般に、任意の 2 つのシーケンス番号に当てはまる必要があります。