Google云数据存储是否支持原子操作,对于计数器等?我在文档中没有看到任何东西,我注意到更新基本上是获取整个对象,更新一个字段,然后将整个对象发送回来,这看起来会使原子操作变得不可能。 https://cloud.google.com/datastore/docs/concepts/entities#Datastore_Updating_an_entityGoogle云数据存储是否支持原子操作,对于计数器等?
3
A
回答
4
不是直接的,但可以使用transactions来模拟原子增量操作。在最简单的情况下,您使用单个实体并使用事务性读写增量。如果有一个并发增量,这样的事务将会失败,所以计数器不能很好地扩展。相反,您可以在n个实体上使用[('Counter', 'MyCounterX'), ('Elt', 'k')]
形式的密钥(对于某些数字k)和属性'Count':
要递增,请选择1到n之间的随机数,并尝试事务性读写。如果密钥不存在,请在count = 1的给定密钥上编写一个新实体。如果交易失败,您可以重试一个新的随机数。您还可以包含应用程序的逻辑,以便随时增加n开始频繁竞争的时间。
要检索计数,请在Count属性上使用根[['Counter','MyCounterX')]进行祖先查询,然后合计所有计数。
你可以看到代码在第二个块here中实现它。
相关问题
- 1. Google云数据存储ORM
- 2. Firebase的云端函数是否支持文件操作?
- 3. Visual Studio是否支持数据缓存操作?
- 4. OpenGL原子计数器等效于CUDA
- 5. Google云存储对象更改通知是否支持生命周期事件?
- 6. Google云端平台HTTP函数是否支持路由参数?
- 7. mysql存储过程是否支持像数组,哈希等数据类型?
- 8. 是否建议将Google数据存储用于存储日志?
- 9. 软层云对象存储是否支持存储桶生命周期配置
- 10. 谷歌App Engine数据存储不支持操作+
- 11. OpenCL中不支持的原子操作
- 12. 是数据库操作原子
- 13. 安装Google云数据存储gcd
- 14. Google云端数据存储索引
- 15. Google云数据存储:使用密钥
- 16. 在Google云端存储中存储关键值类似于Google云端存储中的数据
- 17. Google云端存储流式传输是否支持同时读取/写入?
- 18. 支持Google云数据流编码器中的可空字段
- 19. DynamoDB是否支持更新操作(如关系数据库)
- 20. Azure存储数据移动库是否支持Azure表?
- 21. HTTP 304结果是否也算作Google云端存储中的操作
- 22. 云数据库存储我们的数据是否可用?
- 23. Google App Engine:对数据存储的操作已更改
- 24. 是否有任何支持计算列的内存数据库?
- 25. 单实体数据存储是否原子写入?
- 26. 云数据存储 - 利用我的Google Cloud Datastore中的小操作
- 27. 原始传感器数据是否可以存储在Google健身店中?
- 28. 熊猫数据框操作中不支持的操作数
- 29. 从Google云端存储中存储的XLS中读取数据
- 30. Google App Engine数据存储仅支持200个索引
太好了,谢谢你的回答。如果n足够大,它可以很好地扩展吗?或者是否使用Datastore做了很多这样的事情,例如统计/分析? – 2014-11-25 19:04:32
阅读能力很好:投影查询速度快,价格便宜,使用祖先提供了很强的一致性。 写作并没有扩展,因为每个实体组的每秒1 txn有一个规定的限制,实际上每秒约10-20个。无论您制作多大n,都会达到此限制。 – Isaac 2014-12-05 06:25:09