的CouchDB base configuration允許其中數據庫存儲,像這樣的目錄設置:如何每個數據庫存儲在不同的目錄
database_dir = /path/to/the/databases
但我想每個數據庫存儲在不同的目錄中。這可能嗎?如果不支持開箱即用,是否有任何解決方法可以實現這一點?還有其他的NoSQL數據庫支持這個嗎?
的CouchDB base configuration允許其中數據庫存儲,像這樣的目錄設置:如何每個數據庫存儲在不同的目錄
database_dir = /path/to/the/databases
但我想每個數據庫存儲在不同的目錄中。這可能嗎?如果不支持開箱即用,是否有任何解決方法可以實現這一點?還有其他的NoSQL數據庫支持這個嗎?
你可以嘗試更新couchdb config file on the fly,但我認爲它會打破couchdb,如果你這樣做。
解決方案可能是運行多個couchdb實例。 couchdb相當輕便,只需要19 MB的內存,當它沒有任何內容時[1]每個couchdb都可以指向您選擇的不同目錄。但是,如果你可以委託沙發爲你跑步,而不是讓多個couchdb運行並等待它會好得多。爲此你需要一個虛擬機。 erlang on xen聽起來很適合這個任務,因爲couchdb是用erlang編寫的。雖然你將不得不嘗試一下,因爲那裏也有非erlang部分。如果這不起作用,總是有碼頭工人。根據我跑的懶惰星期一下午實驗。進行你自己的確定:)
如果你不創建很多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會自動格式化數據庫在預期的int ernal格式,你可以開始使用它。
這不建議,它會打斷壓實。 – dch
使用%2f
在你的數據庫名稱來實現這一目標:
dch http put $COUCH/dir%2fsubdb
dch tree ~/couchdb/dbs
/Users/dch/couchdb/dbs
├── _replicator.couch
├── _users.couch
└─── dir/
└── subdb.couch
IIRC這應該生存壓實。
更好的問題是「爲什麼你想把你的數據庫放在不同的文件夾中」?它對用戶不可見,並且它們已經在不同的文件中。有什麼優勢?你會把每個表都放在一個SQL數據庫中嗎?
好的絕招。謝謝:) –
對我來說,這個問題很有趣,因爲我正在研究一個系統,它可能從每個用戶擁有3-4個數據庫中受益,而且應該能夠爲很多用戶提供支持。這會導致一個目錄中有很多文件(和壞的perf)。 – oskarth
CouchDB將*不*運行在EoX上(可悲),因爲它有幾個基於C的依賴關係,並且嚴重依賴於針對javascript功能的std OS流程。 像這樣更新配置只會導致宇宙崩潰。意見將需要重建,我無法想象還有什麼會失控。 您可以在數據庫名稱中使用%2f技巧,我將在其自己的答案中添加該技巧。 – dch