CouchDB base configuration允许设置存储数据库的目录,如下所示:
database_dir = /path/to/the/databases
但我想将每个数据库存储在不同的目录中。这可能吗?如果不支持开箱即用,是否有任何解决方法可以实现这一目标?还有其他NoSQL数据库支持这个吗?
答案 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将自动格式化预期内部格式的数据库,您可以开始使用它。