2014-07-25 45 views

回答

0

你可以嘗試更新couchdb config file on the fly,但我認爲它會打破couchdb,如果你這樣做。

解決方案可能是運行多個couchdb實例。 couchdb相當輕便,只需要19 MB的內存,當它沒有任何內容時[1]每個couchdb都可以指向您選擇的不同目錄。但是,如果你可以委託沙發爲你跑步,而不是讓多個couchdb運行並等待它會好得多。爲此你需要一個虛擬機。 erlang on xen聽起來很適合這個任務,因爲couchdb是用erlang編寫的。雖然你將不得不嘗試一下,因爲那裏也有非erlang部分。如果這不起作用,總是有碼頭工人。根據我跑的懶惰星期一下午實驗。進行你自己的確定:)

+0

CouchDB將*不*運行在EoX上(可悲),因爲它有幾個基於C的依賴關係,並且嚴重依賴於針對javascript功能的std OS流程。 像這樣更新配置只會導致宇宙崩潰。意見將需要重建,我無法想象還有什麼會失控。 您可以在數據庫名稱中使用%2f技巧,我將在其自己的答案中添加該技巧。 – dch

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會自動格式化數據庫在預期的int ernal格式,你可以開始使用它。

+0

這不建議,它會打斷壓實。 – dch

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數據庫中嗎?

+0

好的絕招。謝謝:) –

+0

對我來說,這個問題很有趣,因爲我正在研究一個系統,它可能從每個用戶擁有3-4個數據庫中受益,而且應該能夠爲很多用戶提供支持。這會導致一個目錄中有很多文件(和壞的perf)。 – oskarth

相關問題