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