前言
需要確認的地方!
1: 內存段中的數據刪除後是否立即刪除,查不到信息?即內存段,是否沒有刪除表?
是有的,讀段都有delete map
2: 內核說,能查到標記刪除的文檔的版本號信息,
得到的是 add -- > delete ---> now 這裏面的delete版本號信息嗎? 我感覺可能是add的信息
,如果是的話,那麼delete 需要記錄版本號的信息, ES中delete也會存儲一個版本號。
3: 解決的痛點是,段合併的時候查不到版本號信息,
也就是從3s - 15m -6h -- 1d - 30d - e,
如果一個帖子在e段中,此次被刪除,那麼會在e段加入標記刪除表,
同時,需要增加一個新的map,策略如下(保留2m -1m的帖子)
--- 10:00 delete map --- 10:01 delete map ---- 10:02 delete map ----
啓動,在當前時刻(10:00)生成一個delete map,存儲參照刪除表,但是需要帶上version信息
從10:00 - 10:01 的刪除帖子都會寫入此 刪除表中,
10:01到,生成新的刪除表,並將後續帖子寫入當前刪除表,並準備清空上上個刪除表,
查詢的時候,從當前刪除表和上分鐘刪除表中查版本號,
維護成本比較高,需要額外線程資源。
4: 後續
能否在wtable中做CAS,判斷是否能發送索引操作??
不行,wtable和索引是兩個存儲,在操作的時候是分開的,在wtable cas判斷成功後,併發執行索引的順序沒辦法保證。
正文
需要解決一種場景
新增要被拋棄,但是正確執行了!