NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

视频:Damien Katz 畅谈 CouchDB

  • 2009-05-18
  • 本文字数:754 字

    阅读完需:约 2 分钟

Damien Katz 在访问中畅谈 CouchDB。CouchDB 是由 Apache Incubator 开发的一个分布式、容错、面向文档的数据库。CouchDB 数据库用 Erlang 编写,通过 HTTP/JSON API 访问。数据库视图引擎运行在 JavaScript 上,但也有 Ruby、Python 等语言的替代实现。

在被问到 CouchDB 为什么会选择 Erlang 去实现的,Katz 回答到:

CouchDB 最早是用 C++ 实现的,结果有点碰壁。当时我有了存储引擎、有了视图引擎、有了查询语言,都是 C++ 写的,结果我在并发问题上撞了墙,因为 老是要按传统方式去处理线程、锁、消息这些事情。后来我在“Lambda the Ultimate”还是哪里看到 Erlang 是个非常好的并发语言,所以想看看怎么把它融合进我的代码里头。所以我就下载了 Erlang,玩了没多久就认 定用它写数据库引擎和服务器简直是天作之合,于是我把原来的 C 和 C++ 代码扔了,全部用 Erlang 重写。用 Erlang 写这个效率高得没法说,它特别适 合做这些基础设施类型的东西。它原来是为电信业设计的,电信业面对的问题和数据库有很多相似之处,比如输入、输出量都很大、要保证可靠、平滑地处理失败。 所以最后发现 Erlang 是 CouchDB 最适合的实现语言。

当被问道 Erlang 的可伸缩性方面是否给 CouchDB 以帮助时,Katz 解释到:

并发方面绝对有。有人抢着做了个基准测试,能达到 2 万个并发连接。很厉害的结果。而我们还没有做过 Profiling 呢。Erlang 在这方面绝对给我们 帮了大忙。如果我用传统的线程模型,500 个活动连接就算很不错了,所以说 Erlang 绝对提高了单台机器的可伸缩性。Erlang 对多台机器的可伸缩性 也会有帮助,只不过我们暂时还没有用到那方面。有很多工具、库等等可以让多台机器的 Erlang 环境完成自动故障转移、高效率的消息交换等等,我们只不过 还没用到那方面而已。

更多内容,请观看完整视频 Damien Katz 畅谈 CouchDB

2009-05-18 02:132209
用户头像

发布了 225 篇内容, 共 61.0 次阅读, 收获喜欢 50 次。

关注

评论

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

Taurus: 面向机器学习的数据面架构

俞凡

人工智能 网络 自智网络

如何在 Linux 中删除超过 30 天的文件

wljslmz

Linux 10月月更

匿名网络追踪溯源机制及方法

郑州埃文科技

IP地址 追踪溯源 匿名网络

Linux操作系统——组管理和权限管理

胖虎不秃头

Linux 操作系统 10月月更

用30分钟相中10倍工程师

愚夫一得

面试 技术管理 招聘 文化 & 方法

业务实时监控服务

穿过生命散发芬芳

10月月更 业务监控

【一Go到底】第二天---你好,Go and GOROOT&GOPATH

指剑

golang Go入门 10月月更

MyBatis 学习笔记之配置文件

openpark

mybatis 10月月更 mybatis配置文件

【牛客刷题-算法】3-第一篇-斐波拉契数列-C实现

清风莫追

递归 数据结构与算法、 10月月更

【牛客刷题-算法】NC4 判断链表中是否有环

清风莫追

算法 10月月更

【LeetCode】在LR字符串中交换相邻字符Java题解

Albert

LeetCode 10月月更

计算机网络——以太网交换机学习和转发帧

StackOverflow

编程 计算机网络 10月月更

[架构实战] 课后作业二

爱学习的麦子

MyBatis 学习笔记之MyBatis入门开发

openpark

mybatis 10月月更 mybatis入门

【牛客刷题-算法】2-算法入门-栈的压入、弹出序列

清风莫追

算法 10月月更

乐观锁和悲观锁

潜水员

并发

架构师的十八般武艺:风险管理

agnostic

风险管理

【从0到1学算法】2.递归

Geek_65222d

10月月更

Python应用之计算阶乘

智趣匠

函数 10月月更 阶乘计算

Vue3入门指北(六)列表渲染

Augus

Vue3 10月月更

工赋开发者社区 | 某大型电子装备总装数字化工厂MES/MOM系统实施

工赋开发者社区

Linux操作系统——用户管理、实用指令

胖虎不秃头

Linux 10月月更

Python基础(六) | 面向对象类定义及特性详解

timerring

实例 10月月更

Qt中读取json文件以及总结

中国好公民st

c++ qt 10月月更

Linux操作系统——定时任务调度、磁盘分区与挂载、网络配置

胖虎不秃头

Linux 操作系统 10月月更

2022-10-02:以下go语言代码能否通过编译?A: 能;B: 不能;C: 不知道。 package main import ( “fmt“ ) type worker interfa

福大大架构师每日一题

golang 福大大 选择题

工赋开发者社区 | 当PLC与见“IT”:MES/MOM标准之ISA-95基础内容介绍

工赋开发者社区

你是如何使用React高阶组件的?

beifeng1996

React

Python基础(七) | 文件、异常以及模块详解

timerring

异常 模块 10月月更

【愚公系列】2022年10月 Go教学课程 016-运算符之逻辑运算符和其他运算符

愚公搬代码

10月月更

架构师的十八般武艺:变更管理

agnostic

需求变更

视频:Damien Katz畅谈CouchDB_Ruby_Werner Schuster_InfoQ精选文章