2012-05-11 25 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一起使用,它可以作为独立服务器运行。

尚未实现所有功能。