我正想通過這個Instagram engineering article凡在他們關於非規範化櫃檯提到,我引用卡桑德拉 - 使計數器更新和正常更新原子
要降低這些操作的資源,我們非規範化計數器喜歡這篇文章。每當有新的進來時,數據庫中的計數就會增加。因此,計數的每次讀取只是一個簡單的「選擇」,這是一個更有效的方法。
也有在其中類似器到後存儲在同一個數據庫 櫃檯反規範化的一個額外的好處。這兩個更新可以包含在一個事務 ,使得更新原子和一致 所有的時間。而改變之前,在高速緩存中的計數器可以 什麼是存儲在數據庫中,由於超時不一致, 重試等
我試圖更新計數器表和普通表其中有用戶誰喜歡在使用批處理後,
BEGIN BATCH
UPDATE postlike_counter_counter
set likecount = likecount+1
where postid = c77b9e44-379b-11e7-93dc-dd4982fae088;
INSERT INTO postlikes (postid, likedtime, likedby) values(c77b9e44-379b-11e7-93dc-dd4982fae088, unixTimestampOf(now()),
{"firstname": 'fname', "lastname": 'lname', "profileimgurl":'img/pic'});
APPLY BATCH;
我看到錯誤,計數器突變只允許在反批 如果我做它作爲一個反批,我得到的,COUNTER批次只允許計數器突變
有沒有什麼辦法可以使這項工作?如果不是的話,那麼當他們寫出上面引用的行時,這篇文章究竟意味着什麼?
這篇文章在他們說使用原子事務時究竟意味着什麼。上述解決方案似乎不是原子的? – gameOne