Couchbase - 在内存和磁盘上保存文档的顺序

时间:2016-03-07 15:52:45

标签: spring spring-data couchbase couchbase-view

在将数据移动到文件存储之前,Couchbase是否先将文档存储在内存中?是否有任何配置可用于指定数据在刷新到文件存储之前必须存储在内存中的时间长度?

2 个答案:

答案 0 :(得分:2)

Couchbase架构首先是内存\缓存通过。 您无法决定是否使用内存,并且会尽快将数据写入磁盘。 部分原因是你需要有足够的内存来存储你拥有的数据量。

你确实有一些政策,如完全或价值驱逐,但你再也没有控制权。

但你可以做的是在SDK中等待数据被复制\持久化到磁盘。

答案 1 :(得分:1)

Couchbase将数据存储在磁盘和RAM中。默认行为是在存储到RAM中之后的某个任意时间(通常很快)将文档写入磁盘。这留下了一个短窗口,其中节点故障可能导致数据丢失。我在Couchbase的当前版本的文档中找不到任何内容,但过去可以请求“set”方法仅在数据持久保存到磁盘后才完成(默认为仅限RAM)。 / p>

在任何情况下,写入RAM后,文档最终将写入磁盘。 Couchbase保留disk write queue,您可以在管理控制台中的指标报告页面上查看。现在,CB确实在集群中同步写入,并且我相信在Couchbase确认写入发生之前(例如在写入方法返回给调用者之前),将在集群中同步写入。同样,文档很难确定,因为之前的版本文档更加详细。

如果您的文档数量超过可用RAM,则只有最常访问的文档才会存储在RAM中以便快速检索,其他所有文档将被“逐出”到磁盘。