BtrDB:Optimizing Storage System Design for Timeseried Processingmongodb
uuid
version:這裏是延時數據會對舊數據作更改,但扔提供就查詢一致性。每一個新插入都是一個新version
k:2^resolution
copy-on-write:這個是說不須要鎖,新插入單首創建樹節點,舊數據不變,
version-annotated:若是下層節點有多個version,上層用最大的version。
預聚合
聚合非IO,寫磁盤時須要依賴下一層的地址返回,中間節點是對存儲的浪費。數據庫
架構:seda。(分階段觸發,解耦,可異步並行,去鎖,隊列+線程池+處理事件+觸發下一階段)
請求階段:讀相對寫不多,單線程,寫用session managers控制流量,分發到線程隊列,累積超時或16kponits後觸發寫階段。
寫階段:對寫入數據進行線段樹的聚合(從free pool中獲取mem),構造時臨時地址,
block在落盤前有壓縮和chache,
壓縮 由於傳統的delta coding是對每一個value計算差別,但ns時間value太長了,對於noise也不友好,delta-delta根據上一個窗口的平均delta values和如今的差別,基於huffman coding using a fixed tree.
每層依賴下一層地址,在正常落盤數據須要把mem的地址轉爲真的無力地址,爲了儘可能不阻塞,提早分配free addr,
root map,記錄uuid_version對應存儲的地址。用mongodb(由於這部分數據和正常的時序數據差別太大了)session
略架構