在將數據移動到文件存儲之前,Couchbase是否先將文檔存儲在內存中?是否有任何配置可用於指定數據在可以刷新到文件存儲之前必須存儲在內存中的時間?Couchbase - 將文檔保存在內存和磁盤上的順序
回答
Couchbase將數據存儲在磁盤和RAM中。默認行爲是將文檔存儲在RAM中後,在某個任意時間(通常很快)將文檔寫入磁盤。這留下了一個短暫的窗口,其中節點故障可能導致數據丟失。我在Couchbase的當前版本的文檔中找不到任何內容,但過去一直是您可以請求「set」方法,只有在數據保存到磁盤後才能完成(默認爲僅限RAM)。
在任何情況下,寫入RAM後,文檔最終都會寫入磁盤。 Couchbase保留一個disk write queue
,您可以在管理控制檯的度量報告頁面上檢查它。現在,CB確實跨羣集同步寫入,並且我相信在Couchbase確認寫入發生之前(例如在寫入方法返回給調用者之前),寫入將在羣集中同步。此外,文檔很難確定,因爲之前的版本文檔更加詳細。
如果您的文檔多於可用內存,則只有最常訪問的文檔纔會存儲在內存中以便快速檢索,其他所有文檔都會被逐出磁盤。
Couchbase架構是內存第一\ Cache通過。 您無法決定是否使用內存,並且儘快將數據寫入磁盤。 部分原因是您需要有足夠的內存來存儲您擁有的數據量。
你確實有一些策略,如完全或價值驅逐,但你又沒有控制權。
但是你可以做的是在SDK中等待,直到數據被複制\持久化到磁盤。
感謝Roi。例如,如果我擁有100 GB的內存,那麼在將內存刷新到磁盤之前,數據是否保留在內存中直到達到100 GB的限制? –
不完全。 存在什麼叫做高水位(假設存儲桶分配的內存的80%),在達到它之後,根據驅逐策略,完整文檔(元數據)被驅逐或者只是數據。 –
再次感謝Roi! –
- 1. 在磁盤上保存文件
- 2. 將PDF文件保存在磁盤中
- 3. 將文件保存在磁盤中
- 4. Carrierwave不保存磁盤上的文件
- 5. 將trie保存到磁盤
- 6. 將nsdate保存到磁盤
- 7. 將DynamicMethod保存到磁盤
- 8. Spring會將內容保存在內存中還是保存在磁盤中?
- 9. 將上傳的文件保存在磁盤上,ubuntu路徑
- 10. Couchbase是否將JSON作爲純文本存儲在磁盤中?
- 11. UWP將zip文件保存到磁盤
- 12. 提示將文件保存到磁盤
- 13. Chrome擴展程序:如何將文件保存到磁盤上
- 14. 將FlowDocument保存到磁盤作爲XPS文檔
- 15. 使用Quartz將PDF文檔保存到磁盤
- 16. git add -A將刪除的文件保存在磁盤上?
- 17. 基於磁盤的文檔存儲
- 18. 將內存中的H2數據庫保存到磁盤
- 19. 在內存中創建FileStream而不是在磁盤上保存物理文件
- 20. 將內存數據庫保存到磁盤
- 21. 將img/image的HTML保存到磁盤
- 22. 回形針,在保存在磁盤上的文件之前保存記錄
- 23. 在內存中保存的對象,而從磁盤
- 24. 將文件保存在磁盤上針對備份和恢復的數據庫
- 25. 將會話存儲在磁盤上
- 26. Ruby:顯示內存中的HTML文件而不將其保存到磁盤
- 27. MySql不保存到磁盤
- 28. Mongoengine FileField保存到磁盤?
- 29. UIManagedDocument不保存到磁盤
- 30. 列表保存到磁盤上
Couchbase在「任意時間」不會寫入磁盤。它以儘可能快的速度寫入磁盤。是的,有一些操作系統級別的磁盤隊列,但這是不可避免的。此外,Couchbase不只是將數據寫入RAM,而是寫入一個託管緩存。具體來說,它使用混合memcached爲此。除此之外還有更多,但你明白了。 – Kirk
@Kirk - 謝謝你的澄清 - 要清楚,「任意」這個詞在數學意義上是指「非確定性的或未指定的」,而不是沒有邏輯。是的,當它使用memcached時,其要點是數據存儲在RAM中,而不是在較慢的物理介質上。 – theMayer