写点什么

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

2010 年 9 月 19 日

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 CouchD B

2010 年 9 月 19 日 09:521400
用户头像

发布了 47 篇内容, 共 72410 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

架构师训练营1期第5周作业--一致性哈希算法

木头发芽

第一周作业1:设计图表

韩儿

架构师训练营 - 第一周课后练习

joshuamai

美滋滋!阿里内部最新出台Java开发规范和系统性能优化指南~

Java架构追梦

Java 学习 架构 面试 性能优化

区块链支付系统开发源码,usdt承兑支付平台搭建

WX13823153201

区块链支付系统开发

前端更应懂产品

执鸢者

产品 腾讯 前端

架构师训练营第五周作业

听夜雨

极客大学架构师训练营

一、食堂就餐卡系统UML设计

Geek_28b526

第五周总结

_

架构师一期 架构师第五周总结

什么! 你还在使用 if (xxx != null)做NullPointerException判断?

刘超

Java Optional

c++nullptr(空指针常量)、constexpr(常量表达式)

良知犹存

c++

《我想进大厂》之JVM夺命连环10问

艾小仙

Java 编程语言 JVM jvm调优

食堂就餐系统UML图

小兵

架构师训练营第 1 期 week5

张建亮

极客大学架构师训练营

《我想进大厂》之Dubbo普普通通9问

艾小仙

Java dubbo RPC HTTP

这本书可能是给用户最好的礼物——专栏《软件交付那些事儿》上线

刘华Kenneth

科大讯飞开发者大赛:首届X光安检图像识别挑战赛结果出炉

Talk A.I.

极客大学架构师训练营2期第一周 作业

渡江卿

仿生智能 | 初号机的成长之路序章

高翔龙

人工智能 AI 机器人 Robot

Week1-架构方法学习

evildracula

学习 架构

世界上最难的5种编程语言

艾小仙

编程语言 编译 esolang

架构师训练营第一周总结

小兵

成为架构师 - 架构师训练营第01周

陈永龙Vincent

架构师训练营第 1 期第 5 周学习总结

好吃不贵

极客大学架构师训练营

甲方日常 37

句子

工作 随笔杂谈 日常

架构师训练营第一周学习总结

韩儿

架构训练营第一周学习总结

Jack

食堂就餐卡系统设计

Jack

架构设计

架构师训练营培训第一周作业

lakers

极客大学架构师训练营

架构师训练营第五周总结

听夜雨

极客大学架构师训练营

我在苦苦坚持的时候,WebStorm已经悄悄的“真香”起来

小Q

Java 学习 架构 面试 webstorm

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

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