在過去十年中,雲中的數據密集型應用程序和服務有了巨大的增加。數據在各類邊設施(例如,設備,瀏覽器和服務器)上建立,並由雲應用程序處理用來得到數據價值或作出決策。應用程序和服務能夠處理收集的數據,也能夠實時監控數據。這些應用程序一般是更新密集型的,而且涉及大量的狀態,超出了適合主存儲器的處理能力。可是,它們在其訪問模式中顯示出重要的時間局部性(時間局部性解釋維基百科=>https://en.wikipedia.org/wiki/Locality_of_reference)。一種用於點運算的新的鍵值存儲。FASTER將高速緩存優化的併發哈希索引與「混合日誌」結合在一塊兒:跨越主內存和存儲的併發日誌結構記錄存儲,而且支持內存中「熱插拔」的快速就地更新。FASTER擴展了標準鍵值存儲接口,以處理讀取 - 修改 - 寫入,blind 更新和基於CRDT的更新。實驗代表,與當前普遍部署的存儲庫相比,FASTER在單臺機器上實現了更高的吞吐量(每秒高達1.6億次操做),而且當工做負載大小適合內存大小時,他的性能將遠勝於純內存數據結構的性能。html
微軟研究團隊於2018年6月份在SIGMOD 宣佈了一項名爲FASTER的新的key-value存儲庫。FASTER支持快速和頻繁的數據查找。它還有助於解決在當今雲時代的應用程序更新大量狀態信息的問題。git
讓咱們以物聯網爲一種場景。數十億設備報告和更新狀態,如每一個設備的性能計數器。這將致使應用程序未充分利用機器上的存儲庫和網絡等資源。他能更快地幫助解決此問題, 由於它利用這些應用程序中的時間位置來控制系統內存佔用量。github
根據微軟的說法,「FASTER是一個單節點共享內存鍵值存儲庫」。鍵值存儲是NoSQL數據庫,它使用簡單的鍵/值方法進行數據存儲。它包含兩項重要創新:redis
傳統的鍵值存儲利用日誌結構記錄數據。可是,FASTER是不一樣的,由於它有一個混合日誌,它結合了日誌結構和讀取副本更新(適用於外部存儲)和就地更新(適用於性能更高的內存)。所以,位於存儲器中的混合日誌的頭部使用讀取 - 複製 - 更新,而主存儲器中的混合日誌尾部使用就地更新。內存中有一個位於這兩個區域之間的只讀區域。它爲核心記錄提供了另外一個被複制回尾部的機會。這捕獲了更新的臨時位置,並容許在內存中自動的收集熱記錄。mongodb
所以,FASTER甚至可以超越英特爾TBB hash map等純內存數據結構。微軟表示,它的性能遠遠優於今天流行的諸如RocksDB和Redis等鍵值存儲的緩存系統。數據庫
除此以外,FASTER還爲故障恢復提供支持,由於它包含一個恢復策略,有助於將系統以低成本恢復到最近的一致狀態。這與傳統數據庫系統中的恢復機制不一樣,由於它不涉及阻止或建立單獨「預寫的日誌」。數組
有關更多信息,請查看官方研究報告。瀏覽器
FASTER項目Github地址:https://github.com/Microsoft/FASTER緩存
有人會問,有了這個FASTER,既然他速度這樣快是否是能夠代替redis或者mongodb,答案是目前不能,由於FASTER是內核級的,和Google的leveldb差很少層級,FASTER速度很是快毋庸置疑,可是目前缺乏更高複雜業務場景的支持,好比集羣,數據一致性之類的商用需求,不過如此誘人的性能一定吸引更多的人去投入FASTER中開發出相似redis和mongodb的產品出來,性能也一定更強,說不定redis後期底層就用FASTER改寫了。🤭服務器
翻譯參考:
https://hub.packtpub.com/say-hello-to-faster-a-new-key-value-store-for-large-state-management-by-microsoft/
https://www.microsoft.com/en-us/research/publication/faster-concurrent-key-value-store-place-updates/
https://www.microsoft.com/en-us/research/blog/microsoft-unveils-faster-key-value-store-large-state-management/