2012-05-11 24 views
8

CouchDB是否存在模擬後端,即相同的REST接口和語義,但純粹是內存中的?我們有一個測試套件,每次在原始數據庫上運行每個測試(可重現),但是對真實數據庫的運行可能會更快。CouchDB內存中實現

回答

6

您的意思是針對模擬數據庫運行嗎?

我不認爲開箱即可。兩個想法:

  1. CouchDB在內存文件系統上。設置ramdisk或tmpfs安裝,並將CouchDB database_dirview_index_dir配置爲指向那裏。
  2. PouchDB正在將CouchDB移植到瀏覽器的IndexedDB標準中。你沒有說你正在使用哪種語言和環境,但是如果你可以運行Node.js,這可能值得研究。 PouchDB具有良好的發展勢頭,我認爲它很快就會在Node.js中運行(可能通過jsdom或其他庫)。請注意,這並不能爲您提供完整的解決方案;但是您已將問題擴展到「是否有內存IndexedDB Node.js的實現「,其答案是」yes「或」soon「,因爲它的採用軌跡。
+1

我避免使用「模擬」這個詞,因爲我真正想要的是針對真正的數據庫運行,只需要更快的後端(不一定是持久性的)。嘲笑從來不是100%兼容的,準確的嘲弄是昂貴的維護。 –

+0

對。你需要一個「模擬」,這是真實的東西,這是真的,事實上,真實的東西。這是很好的測試。不幸的是,我沒有比我列出的兩個半答案更好的想法(這些答案沒有加在一起)。 – JasonSmith

0

我有同樣的問題...對於測試,我只是不想設置一個我只是想有一些內存的東西,儘可能容易。

我做了什麼: *我創建一個內存CouchDB連接器=>它只是一個非常簡單的實現「org.ektorp.CouchDbConnector 「 *春天我把CouchDbCo當我使用它爲我的開發測試我連接我的內存CouchDB連接器,如果我想連接到一個真正的CouchDb我使用通常的連接器=> org.ektorp.impl.StdCouchDbConnector

唯一的問題是,該「org.ektorp.CouchDbConnector」有超過50個方法,必須實施。對於我的問題,僅僅實現這些方法中的幾個就足夠了。取決於你的測試案例。

2

基於前面提到的PouchDB項目(CouchDB的JavaScript實現),使用pouchdb-server取得了很大的成功。它可以針對各種後端運行,包括內存後端。這意味着您可以運行

pouchdb-server --in-memory 

以獲取內存中與CouchDB兼容的服務器。還有其他幾個命令行選項可供探索。

我認爲它能夠運行整個CouchDB測試套件,所以我猜想你不太可能遇到太多的實現差異。

-1

memorydb是CouchDB的部分(進行中)內存中實現,可與Kivik一起使用,它可以作爲獨立服務器運行。

尚未實現所有功能。