在将数据移动到文件存储之前,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. 将文件保存在磁盘中
- 3. Carrierwave不保存磁盘上的文件
- 4. Spring会将内容保存在内存中还是保存在磁盘中?
- 5. 将DynamicMethod保存到磁盘
- 6. 将NSMutableArray保存到磁盘
- 7. 将trie保存到磁盘
- 8. 将nsdate保存到磁盘
- 9. 将上传的文件保存在磁盘上,ubuntu路径
- 10. UWP将zip文件保存到磁盘
- 11. Chrome扩展程序:如何将文件保存到磁盘上
- 12. 如何将倒排文档索引存储在磁盘上?
- 13. 使用Quartz将PDF文档保存到磁盘
- 14. 将内存中的H2数据库保存到磁盘
- 15. 基于磁盘的文档存储
- 16. 在内存中创建FileStream而不是在磁盘上保存物理文件
- 17. 将内存数据库保存到磁盘
- 18. 将img/image的HTML保存到磁盘
- 19. 回形针,在保存在磁盘上的文件之前保存记录
- 20. 将会话存储在磁盘上
- 21. 列表保存到磁盘上
- 22. Mongoengine FileField保存到磁盘?
- 23. 将测试日志保存到磁盘?
- 24. 如何将ImageCache保存到磁盘中?
- 25. 将可变数据保存到磁盘
- 26. 将TransformedBitmap对象保存到磁盘。
- 27. 将Outlook附件保存到磁盘
- 28. Jasper Reports将PDF保存到磁盘
- 29. 将PDF保存到本地磁盘C#
- 30. 在磁盘或MongoDB上存储文件
Couchbase在“任意时间”不会写入磁盘。它以尽可能快的速度写入磁盘。是的,有一些操作系统级别的磁盘队列,但这是不可避免的。此外,Couchbase不只是将数据写入RAM,而是写入一个托管缓存。具体来说,它使用混合memcached为此。除此之外还有更多,但你明白了。 – Kirk
@Kirk - 谢谢你的澄清 - 要清楚,“任意”这个词在数学意义上是指“非确定性的或未指定的”,而不是没有逻辑。是的,当它使用memcached时,其要点是数据存储在RAM中,而不是在较慢的物理介质上。 – theMayer