【问题标题】:Is there a Java Google App Engine Datastore equivalent of Oracle Sequence?是否有与 Oracle 序列等效的 Java Google App Engine 数据存储?
【发布时间】:2013-05-29 18:06:04
【问题描述】:

对于基于 java 的 google app engine web 应用程序,是否有某种等效的方法来获取类似于 oracle 序列的顺序值?

假设我有一个 servlet,我们将其命名为 SequenceServlet,工作非常简单。它会简单地写入序列中的下一个值。

使用 Oracle,您可以创建一个序列 - 让我们称之为“my_seq”并执行以下 SQL:

select my_seq.nextval from dual

虽然可能有很多应用服务器,但只有一个集中式数据库,所以这很容易。但我的谷歌应用引擎应用使用 HRD(高复制数据存储)。如何确保每个应用程序服务器将响应序列中的下一个数字?

我想确保在启动后如果您有 2 个客户端请求...比如说请求 A 的序列号为 10,请求 B 的序列号为 15。

我想确保以下内容属实:

  • 请求 B 肯定发生在请求 A 之后
  • 请求 A 和 B 之间恰好发生了 4 个请求

对于任何 2 个序列号,这通常需要为真。

【问题讨论】:

    标签: google-app-engine google-cloud-datastore


    【解决方案1】:

    对于 HRD,这并不像人们希望的那样微不足道。以下 URL 中有一篇合理的文章(带有 Java 示例),详细说明了如何实现分片计数器,这似乎基本上是您想要的。

    Sharding Counters

    通过使用数据存储事务,您可以确保计数器值自动增加。通过对计数器进行分片,您可以确保这些事务的性能可以满足您的需求。

    此外,通过使用 memcache 可以提高读取性能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-26
      • 1970-01-01
      • 2012-05-11
      • 1970-01-01
      • 2012-12-20
      • 2013-05-17
      相关资源
      最近更新 更多