BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Cloudant发布了基于Java的CouchDB视图服务器

| 作者 Michael Hunger 关注 1 他的粉丝 ,译者 曹云飞 关注 0 他的粉丝 发布于 2010年9月19日. 估计阅读时间: 4 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

CouchDB背后的公司Cloudant刚发布了针对CouchDB的Java视图服务器。这意味着不仅仅是Erlang和解释性语言如Javascript或者Python可以用于Map-Reduce工作,基于JVM的语言也可以用于Map-Reduce工作。本周的CouchDB社区会议将会讨论这项技术。目前Java视图服务器只用于Cludant托管的BigCouch服务。

Java的主要优点是有海量的Java库可用于各种各样与map reduce任务有关的功能。第二点是更可靠的静态类型方面(还需要证实)。

性能比较是有意义的,但是目前还没有做基准测试。预期Java视图的性能会比原生的Erlang视图慢(Java和Erlang可以混合在一个视图中)。使用org.json库做的JSON序列化和反序列化会带来一些性能开销。

要使用基于Java的Map Reduce视图只需要实现一个简单的JavaView接口,该接口提供了对map、reduce和rereduce的回调。例如一个简单的视图,聚合在配置的JSON字段中的单词数量。
{
 "_id":"_design/splittext",  "language":"java",  "views" : {  "title" : {"map":"{\"classname\":\"
com.cloudant.javaviews.SplitText\",\"configure\":\"title\"}","reduce":"com.cloudant.javaviews.SplitText"},
    }     }


InfoQ与负责Java视图服务器项目的Search at Cloudant主管David做了交流。
InfoQ:CouchDB运行在Erlang之上,它如何与JVM中的代码交互?实现这个项目的挑战在哪里?
David:Java视图服务器和所有CouchDB视图服务器一样(除了原生erlang)作为一个外部进程运行。在CouchDb和视图服务器之间有一个定义良好的协议来做通信。
通常,通过标准方式做通信,但是实际上因为性能原因我们使用OtpErlang java-erlang库(允许多线程)。
InfoQ:在这个场景下对代码/库有什么限制?
David:主要的挑战是安全,在系统级和用户数据级都用限制。我们在一个共享的集群运行视图服务器。我们使用动态类加载来加载用户的库。类加载器有一个十分严格的安全管理器来限制恶意调用。不允许文件系统访问,只允许调用有限的系统调用。

目前的视图服务器架构很简单,它使用由基于Erlang的CouchDB实例来驱动java线程。如果Java服务器出问题了,它只是关闭并重启服务器。对于这样的服务器还可以使用基于Scala的Akka framework 或者Jetty的非阻塞请求来实现。Java视图服务器可以运行在任何JVm上。

一 个巨大的潜力在于使用Java的下一代语言例如Clojure、Scala或者Groovy(和其他语言)来做种工作,因为这些语言对于表达这样的任务比 Java更简明高效。据David所说其他团体正在开发一个基于Clojure的视图服务器。如果想评估新的Java视图服务器,可以从Cloudant's的站点获得一个免费的账号。在couchjava github版本库可以看到更详细的介绍

查看英文原文:Cloudant releases Java based view server for CouchDB

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT