视频:Damien Katz畅谈CouchDB(23)

发布于2019-04-21 20:36:11

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