couchdb不断增长(文件大小)

jAn*_*ndy 11 database couchdb couchdb-futon

在磁盘上的数据库文件大小方面,我对CouchDB行为非常困惑.看起来我做的并不重要,数据库文件只会变得越来越大(甚至在删除/清除文档或整个数据库时).

我看了我的/var/lib/couchdb/_dbs.couch文件,它的尺寸从未减小过.简单的例子:

curl -X PUT http://admin:secretpassword@localhost:5984/testdb
Run Code Online (Sandbox Code Playgroud)

_dbs.couch 文件大小增加了5kb.

curl -X DELETE http://admin:secretpassword@localhost:5984/testdb
Run Code Online (Sandbox Code Playgroud)

文件大小没有变化.即使我过滤了数据库的复制(过滤掉已删除的文档)或手动触发压缩,磁盘文件大小也不会减少.现在真正令人困惑的是,Fauxton实际上在这些操作之后显示减少的数据库大小,但它从未反映在所使用的物理磁盘空间中.

在全新安装后,我使用的几乎是标准配置.

这是"像预期的那样工作"还是这里有什么问题?

更重要的是:我能做些什么吗?

M-I*_*M-I 10

它按预期工作,你只是没有查看正确的文件.

每个数据库都有相同名称的相应文件.

例如:

curl -X PUT http://admin:secretpassword@localhost:5984/testdb

curl -X PUT http://admin:secretpassword@localhost:5984/emaildb

  • 由于您有_dbs.couch文件,因此您可能正在使用具有分片功能的CouchDB 2.XX.它将在"shards"文件夹的子文件夹中创建多个文件.

data/ +-- shards/ | +-- 00000000-7fffffff/ | | -- emaildb.124456678.couch | | -- testdb.647948447.couch | +-- 80000000-ffffffff/ | | -- emaildb.124456678.couch |___|____-- testdb.647948447.couch

更多信息:http://docs.couchdb.org/en/latest/cluster/sharding.html

  • 简而言之,分片和集群功能允许您使用分布式映射/减少计算的分布式数据库.在上面的示例中,每个dbs有2个分片,这意味着每个数据库跨越两个文件.创建的每个新doc都可以最终出现在这两个中.但磁盘使用情况不会均匀分布.例如,如果每个doc都是一个小的json doc,但其中一个获得1GB附件(http://docs.couchdb.org/en/latest/intro/api.html#attachments),那么只有一个分片会得到一个1GB凹凸.分片是基于doc的.你可以拥有2个分片,你可以拥有20个分片,并且它们不必都在同一台服务器上(http://docs.couchdb.org/en/latest/cluster/theory.html).如果您知道一台服务器没有足够的磁盘空间来容纳您的所有数据,您可以设置20个couchdb服务器,每台服务器将保存1个分片(大约是所有文档的1/20).无论是地下室中的单个节点,还是遍布全球的couchdb服务器集群,对于客户端应用程序(curl,pouchdb,firefox等),它都是相同的api.

  • _dbs database(_dbs.couch)记录集群和分片管理的每个dbs的信息.它的大小增加,因为每次创建和删除数据库时,它都会更新(Copy-On-Write).从CouchDB 2.1.0开始,它将自动压缩.你可以在你的服务器的配置检查自动压缩设置(在浏览器中:HTTP://本地主机:5984/_utils /#/ _配置/,compactions章节).管理面板位于不同的端口:http:// localhost:5986/_utils

  • Fauxton报道的尺寸是"活动尺寸".不计算仍在磁盘上的已删除文档,这些文档将在压缩后删除.curl http://localhost:5984/testdb将提供其他信息,例如磁盘上的大小(http://docs.couchdb.org/en/latest/api/database/common.html#get--db).