如何将每个数据库存储在不同的目录中

时间:2014-07-25 08:03:12

标签: couchdb

CouchDB base configuration允许设置存储数据库的目录,如下所示:

 database_dir = /path/to/the/databases

但我想将每个数据库存储在不同的目录中。这可能吗?如果不支持开箱即用,是否有任何解决方法可以实现这一目标?还有其他NoSQL数据库支持这个吗?

3 个答案:

答案 0 :(得分:3)

在数据库名称中使用%2f来实现此目的:

dch  http put $COUCH/dir%2fsubdb
dch  tree ~/couchdb/dbs
/Users/dch/couchdb/dbs
├── _replicator.couch
├── _users.couch
└─── dir/
    └── subdb.couch
IIRC这应该在压实中存活下来。

更好的问题是“为什么要将数据库放在单独的文件夹中”?它对用户不可见,并且它们已经存在于不同的文件中。有什么好处?您是否也将每个表都放在SQL数据库的自己的目录中?

答案 1 :(得分:0)

您可以尝试更新couchdb config file on the fly,但我认为如果您这样做会破坏couchdb。

解决方案可能是运行多个couchdb实例。 couchdb非常轻,只需要19 MB的内存,当它什么都没有时[1]每个couchdb都可以指向你选择的不同目录。但是,如果您可以委托沙发为您跑步,而不是让多个couchdb运行并等待它会好得多。为此你需要一个vm。 erlang on xen听起来非常适合这项任务,因为couchdb是用erlang编写的。虽然你必须进行一些实验,因为那里也有非erlang部分。如果这不起作用,总会有泊坞。

[1]根据星期一下午的懒惰实验,我跑了。进行自己的确保:)

答案 2 :(得分:0)

如果你没有创建很多dbs,你可以在你的目标目录和符号链接中手动移动它们(这不是严格需要的,但我猜想以前停止couchdb更安全。)

更好的是,如果你已经知道你的dbs,你甚至可以在启动couchdb之前完成这个过程:

$ touch /path/to/realfiles/db

$ mv /path/to/couchfiles/existingdb /path/to/realfiles/db

然后,在两种情况下:

$ ln -s /path/to/realfiles/db /path/to/couchfiles

启动并接收此数据库的查询后,couchdb将自动格式化预期内部格式的数据库,您可以开始使用它。