2015-10-13 116 views
0

我有很多数据需要存储在磁盘上。 由于它只是键值对,我想用couchbase来做到这一点。我可以真正坚持数据在磁盘上使用couchbase

数据是几个GB,我只分配1 GB RAM到存储桶。 虽然RAM到couchbase只是一个缓存。 但将大量的数据后,我得到了:

Hard Out Of Memory Error. Bucket "test2" on node 100.66.32.169 is full. All memory allocated to this bucket is used for metadata. 
当我打开couchbase Web控制台

couchbase可以作为数据库来存储磁盘上的数据吗?或者它是RAM吗?

更新:

OK,让我的问题更具体: 在couchbase:

  1. 如果我分配一个桶的RAM为1 GB,可我存储10点GB的数据这桶?
  2. 如果我能做到1,我可以认为1 GB RAM是一种具有10个GB的数据高速缓存的(就像CPU二级缓存的RAM缓存)?
+0

1.是 2. 1GB将被分配给该存储桶的Couchbase中内置的托管缓存。Couchbase的数据服务是托管缓存和持久层的层合并,以组成数据库。 – Kirk

回答

1

默认情况下,Couchbase存储所有键(和一些元数据)的RAM,并且填充任何保持与价值观。从版本3.0开始,您可以将存储桶设置为完全逐出模式,该模式仅将缓存文档的密钥保存在RAM中。这使您可以存储比内存多得多的数据,但是对于某些读取操作而言,性能会降低,特别是尝试检索不存在的密钥。

为了解决您的具体问题,编辑水桶并将其设置为全部元数据驱逐。请注意,这将重启桶。

0

Couchbase试图将“活动数据集”(即大多数使用/请求的键)保留到节点的内存中。这对于数据库性能和设计的一部分至关重要,因此您的节点和您的存储桶配额的良好内存大小是关键。

它提供了持久性,但我会说这不是一个磁盘优先的数据库。

余辉磁盘主要为两件事情:从RAM磁盘使数据耐用,弹性的,以节点停机(当然)和卸载数据(按优先最少使用的数据)。

+0

我可以认为在couchbase中的RAM是一种缓存吗? – worldterminator

+0

这是精神,是啊...看到大卫Ostrovsky回答你的更新问题;) –

0

我想你在这里问了一堆不同的问题。 关于错误消息的具体内容:看起来您的存储桶太小,无法存储您存储在其中的所有数据。

关于坚持光盘:你可以强制couchbase写入光盘(甚至配置文件复制到的节点的数量),但如上所述,这可能会损害你的性能。

看看,例如,在python客户端的couchbase的set()api的persist_to标志。

couchbase client for python

+0

问题更新 – worldterminator

相关问题