Tra*_*der 3 google-cloud-datastore
对于计数器等,Google Cloud Datastore是否支持原子操作?我在文档中没有看到任何内容,我注意到更新基本上是获取整个对象,更新字段,然后将整个对象发回,这似乎会使原子操作无法进行.https://cloud.google.com/datastore/docs/concepts/entities#Datastore_Updating_an_entity
不是直接的,但您可以使用事务模拟原子增量操作.在最简单的情况下,您使用单个实体并使用事务读取+写入递增.如果存在并发增量,则此类事务将失败,因此计数器不能很好地扩展.相反,您可以使用[('Counter', 'MyCounterX'), ('Elt', 'k')]某些数字k 形式的键和n属性'Count' 来操作n个实体:
要递增,请选择1到n之间的随机数,然后尝试事务读取+写入.如果密钥不存在,则在count = 1的给定密钥上写一个新实体.如果事务失败,您可以使用新的随机数重试.您还可以包含应用程序的逻辑,以便在它开始频繁发生争用时立即增加n.
要检索计数,请使用root [('Counter','MyCounterX')]执行祖先查询,并在Count属性上使用投影,然后将所有计数相加.
您可以在此处看到在第二个块中实现此功能的代码.
| 归档时间: |
|
| 查看次数: |
1412 次 |
| 最近记录: |