我真的可以使用 couchbase 将数据保存在磁盘上吗
Can I really persist data on disk using couchbase
我有很多数据需要存储在磁盘上。
由于只是键值对,所以想用couchbase来做
数据好几GB,我只给bucket分配了1GB内存。
我虽然 RAM to 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?
更新:
好的,让我把问题说得更具体一点:
在沙发上:
- 如果我将一个桶的内存分配为 1 GB,我可以将 10 GB 的数据存储到该桶中吗?
- 如果我能做到1. ,我可以认为1GB RAM是10GB数据的一种缓存(就像CPUL2缓存是RAM的缓存)?
Couchbase 尝试将尽可能多的 "live dataset"(即最常用/请求的键)保存到节点的内存中。这是数据库性能的关键,也是设计的一部分,因此节点的良好内存大小和存储桶的配额是关键。
它确实提供持久性,但我想说这不是面向磁盘的数据库。
持久化到磁盘主要是为了两件事:使数据持久和弹性节点关闭(当然)和卸载数据(优先级最少使用的数据)从 RAM 到磁盘。
我认为您在这里问了很多不同的问题。
具体关于错误消息:看起来您的存储桶太小,无法容纳您存储在其中的所有数据。
关于持久化到磁盘:你可以强制 couchbase 写入磁盘(甚至配置文档复制到的节点数)但如上所述,这可能会有点影响你的表现。
例如,查看 python couchbase 客户端的 set() api 中的 persist_to 标志。
默认情况下,Couchbase 将所有键(和一些元数据)存储在 RAM 中,并用值填充剩余部分。从 3.0 版开始,您可以将存储桶设置为完全逐出模式,该模式仅将缓存文档的键保留在 RAM 中。这使您可以存储比内存更多的数据,但会降低某些读取操作的性能,尤其是尝试检索不存在的键时。
要解决您的特定问题,请编辑存储桶并将其设置为完全元数据逐出。请注意,这将重新启动存储桶。
我有很多数据需要存储在磁盘上。 由于只是键值对,所以想用couchbase来做
数据好几GB,我只给bucket分配了1GB内存。 我虽然 RAM to 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?
更新:
好的,让我把问题说得更具体一点: 在沙发上:
- 如果我将一个桶的内存分配为 1 GB,我可以将 10 GB 的数据存储到该桶中吗?
- 如果我能做到1. ,我可以认为1GB RAM是10GB数据的一种缓存(就像CPUL2缓存是RAM的缓存)?
Couchbase 尝试将尽可能多的 "live dataset"(即最常用/请求的键)保存到节点的内存中。这是数据库性能的关键,也是设计的一部分,因此节点的良好内存大小和存储桶的配额是关键。
它确实提供持久性,但我想说这不是面向磁盘的数据库。
持久化到磁盘主要是为了两件事:使数据持久和弹性节点关闭(当然)和卸载数据(优先级最少使用的数据)从 RAM 到磁盘。
我认为您在这里问了很多不同的问题。 具体关于错误消息:看起来您的存储桶太小,无法容纳您存储在其中的所有数据。
关于持久化到磁盘:你可以强制 couchbase 写入磁盘(甚至配置文档复制到的节点数)但如上所述,这可能会有点影响你的表现。
例如,查看 python couchbase 客户端的 set() api 中的 persist_to 标志。
默认情况下,Couchbase 将所有键(和一些元数据)存储在 RAM 中,并用值填充剩余部分。从 3.0 版开始,您可以将存储桶设置为完全逐出模式,该模式仅将缓存文档的键保留在 RAM 中。这使您可以存储比内存更多的数据,但会降低某些读取操作的性能,尤其是尝试检索不存在的键时。
要解决您的特定问题,请编辑存储桶并将其设置为完全元数据逐出。请注意,这将重新启动存储桶。