doo*_*man 1 google-app-engine transactions sharding google-cloud-datastore
从Sharding Counters上的这个artice中可以看出,以下函数演示了如何在增量之前选择随机分片.这发生在交易中.
def increment():
"""Increment the value for a given sharded counter."""
def txn():
index = random.randint(0, NUM_SHARDS - 1)
shard_name = "shard" + str(index)
counter = SimpleCounterShard.get_by_key_name(shard_name)
if counter is None:
counter = SimpleCounterShard(key_name=shard_name)
counter.count += 1
counter.put()
db.run_in_transaction(txn)
Run Code Online (Sandbox Code Playgroud)
一次只能进行一次交易并且不会阻止同时更新不同(随机)分片计数器吗?如果是这样,如果一次只能更新一个分片计数器,分片计数器的目的是什么?
谢谢!
事务锁定涉及事务的所有实体.只要不触及相同的实体,您就可以进行多个事务.
每个分片都是一个单独的实体.这允许您同时更新各种分片.
如果事务碰巧尝试命中已经在事务中的分片(由于随机数生成器),则事务将失败.
| 归档时间: |
|
| 查看次数: |
635 次 |
| 最近记录: |