写点什么

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

  • 2010-09-19
  • 本文字数:1167 字

    阅读完需:约 4 分钟

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-09-19 09:523654
用户头像

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

关注

评论

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

web前端培训:Node的重新认识

@零度

前端开发 Node

Java基础重要面试题(一)

逆锋起笔

java面试 java基础 3月月更

AQS 源码流程分析

网易云信

java

WPF 项目版本控制以及布局控件

神农写代码

Nginx 反向代理(二)

神农写代码

大数据培训:HiveSQL技术优化与面试

@零度

Hive SQL 大数据开发

干货|一次完整的性能测试,测试人员需要做什么?

云智慧AIOps社区

测试 性能测试 测试 单元测试 测试类型 测试管理

中科柏诚本地生活引数字化活水,解银行疫情期困局

联营汇聚

面试突击30:线程池是如何执行的?拒绝策略有哪些?

王磊

java面试

To程序员:要写出好代码,你需要懂点儿“底层思维”

博文视点Broadview

什么是 RabbitMQ

Ayue、

RabbitMQ 3月月更

22.04 LTS爆料现场 - UKUI 3.1实操界面曝光,简约却不简单!

优麒麟

Linux 开源 操作系统 优麒麟 UKUI

阿里巴巴发布最佳实践 | 阿里巴巴DevOps实践指南

阿里云云效

云计算 阿里云 DevOps 云原生 迭代管理

PendingIntent重定向:一种针对安卓系统和流行App的通用提权方法——BlackHat EU 2021议题详解(上)

安第斯智能云

安全 安卓

Qunar【业务架构解析与探索】系列课重磅来袭啦!!

Qunar技术沙龙

架构

WPF -资源引用、资源字典引用以及容器模板和数据模板

神农写代码

WPF 与 Winform 的区别以及应用场景

神农写代码

WPF-依赖属性、依赖附加属性以及类型转换

神农写代码

petite-vue源码剖析-双向绑定`v-model`的工作原理

CRMEB

智慧停车场-车牌识别自动计费系统

DS小龙哥

车牌识别 3月月更

微博系统中”微博评论“的高性能高可用计算架构

孙强

架构师实战营

Nginx反向代理(三)

神农写代码

Nginx反向代理(一)

神农写代码

CRM复杂业务场景的低代码开发实践

鲸品堂

低代码

免费下载 |《Serverless 开发速查手册》让你速查秒懂 Serverless

阿里巴巴云原生

云原生

基于微信小程序的驾校预约学车平台的概要设计和详细设计

CC同学

遵循Promises/A+规范,手把手带你实现Promise源码(核心篇)

战场小包

JavaScript 前端 Promise 3月月更

StarRocks 2.1 新版本特性介绍

StarRocks

数据库 大数据 StarRocks

Linux下玩转nginx系列(三)---nginx日志配置文件说明

anyRTC开发者

nginx Linux 音视频 WebRTC 服务器

Web 键盘输入法应用开发指南 (8) —— 模拟事件

天择

JavaScript 键盘 输入法 3月月更

Cloudant发布了基于Java的CouchDB视图服务器_Java_Michael Hunger_InfoQ精选文章