可以在Erlang中编写视图来查询Couch DB。据说用Erlang编写的视图比用JavaScript编写的视图更快。这Article显示了这种可能性。但是,它解释了我们可以在futon: CouchDB Web interface中直接输入Erlang fun
作为临时视图。
问题1:我在哪里可以找到示例用Erlang编写的Couch DB视图,或者至少是这样做的教程(在你的回答中,我将欣赏一个用Erlang编写的视图的例子,它显示了map和reduce的所有基本技术以及选择和过滤沙发的文件)?
问题2:另外,名为Hover craft的Erlang Couch DB客户端据称非常faster because it avoids HTTP overhead as well as JSON conversion overheads。它如何避免HTTP开销?
答案 0 :(得分:2)
回答1 : 以下是“教程”的链接如何设置http://wiki.apache.org/couchdb/EnableErlangViews 最重要的是 [native_query_servers] erlang = {couch_native_process,start_link,[]} 在local.ini文件中,您将其设置为使用此查询服务器。
回答2 : 它避免了http开销,因为常规查询服务器只是一个独立的进程,可以在json中获取数据并对其进行处理。所以Couchdb必须将它序列化为json,然后通过使用嵌入的erlang视图反序列化来自进程的答案,您只需跳过此阶段。而这是“更快”背后的主要原因。我不知道他是否存储了内部编译的视图,但无论如何它都要快得多。
答案 1 :(得分:1)
对于第二个问题,我的回答是气垫船更快,因为对couchdb的调用永远不会离开VM。要使用气垫船,您可以在与couchdb运行相同的节点中加载梁,并且气垫船将直接向couchdb发出erlang调用,并且不会离开节点。
这当然比通过http进行通信要快得多,特别是在必须在json / eterms之间来回转换时。
一个缺点是尽管couchdb没有erlang api,因此气垫船被迫在http-api下面调用非api函数。
关于erlang观点的问题,我可以增加一些经验。几年前我尝试了Erlang的观点,而且与javascript相比,我的速度让我印象深刻。如果我没记错的话它大约是5倍,所以我真的推荐它。此外,调试视图更容易