写点什么

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:523948
用户头像

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

关注

评论

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

第1章:初识数据库与MySQL----MySQL安装

乌龟哥哥

8月月更

《The Google File System》新说

Joseph295

开源一夏 | 查询分页不只有limit,这四种分页方法值得掌握

知识浅谈

开源 8月月更

再次搞定 Ali 云函数计算 FC

小鑫同学

签约计划第三季

转转测试环境的标签域名实践

转转技术团队

nginx hosts

LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之三:两次优化

程序员欣宸

Java LeetCode 8月月更

Jina 实例秀|七夕神器!比你更懂你女友的口红AI

Jina AI

七夕 神经网络架构搜索

8月总结高频vue面试题

helloworld1024fd

Vue

浅聊偏函数

掘金安东尼

JavaScript 函数式 8月月更

MySQL之my.cnf配置文件

TimeFriends

8月月更

Jina 实例秀|基于神经搜索的网络安全威胁检测(一)

Jina AI

神经网络架构搜索 Python.

《迁移学习导论》第2版,升级内容抢先看!

博文视点Broadview

开源一夏|ArkUI如何自定义弹窗(eTS)

坚果

开源 HarmonyOS OpenHarmony 8月月更

一文带你了解 Java 中的构造器

踏雪痕

Java 构造函数 8月月更

SAP 人工智能解决方案的演进史 - 从 SAP Leonardo 到 SAP Data Intelligence

汪子熙

人工智能 机器学习 AI SAP 8月月更

带你造轮子,自定义一个随意拖拽可吸边的悬浮View组件

yechaoa

android 开源 签约计划第三季 8月月更

语音社交app源码——具备哪些开发优势?

开源直播系统源码

软件开发 语聊房 直播系统源码 语音聊天系统 语音聊天app

mysql进阶(二十六)MySQL 索引类型

No Silver Bullet

MySQL MySQL索引 8月月更

仿钉钉审批流程后端 PHP 处理(一)

CRMEB

Rust 入门指南 (用 WASM 开发第一个 Web 页面)

王泰

rust Wasm WebAssenbly ​Rust

架构实战营模块三作业

zhihai.tu

关于技术学习的6个观点

郭明

技术人

IDEA 自动导入的配置(Auto import)

HoneyMoose

CentOS6搭建nginx+uwsgi+flask

haiger13

签约计划第三季

React的理念与V16的架构变化

郭明

React

STM32+SIM800C采用MQTT协议登录OneNet上传温湿度、MQ2烟雾浓度、GPS数据

DS小龙哥

8月月更

【LeetCode】分组的最大数量Java题解

Albert

LeetCode 8月月更

《福格行为模型》:如何养成好习惯?

郭明

读书笔记

Java 是否应该使用通配符导入( wildcard imports)

HoneyMoose

C#/VB.NET:在 Word 中设置文本对齐方式

Geek_249eec

C# word VB.NET 文本对齐

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