CockroachDB学习笔记——[译]为什么Go语言是CockroachDB的正确选择

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CockroachDB学习笔记——[译]为什么Go语⾔是CockroachDB的
正确选择
原⽂链接:
原作者:Jessica Edwards
原⽂⽇期:Nov 3, 2015
译:zifeiy
许多开发⼈员问我们的第⼀个问题是:
为什么我们以我们的经验要⽤Go————⼀门垃圾回收语⾔——来编写分布式数据库。

Java虚拟机的垃圾回收性能是众所周知的优秀,
所以我们⽤Go来编写CockroachDB不是冒着性能上⾯的风险吗?
事实上,当你在编写⼀个⾼性能,分布式(数据库)系统的时候,
只有少数语⾔可供选择:C++、Java和Go排在排⾏榜的最前⾯。

Java的已知性能问题使它变得不吸引⼈,
虽然我们中的许多⼈在其事业中都在使⽤C++,但是建⽴我们⾃⼰的库所需的努⼒进⼀步复杂了编写分布式数据库已经令⼈畏惧的任务。

尽管Go对于项⽬的每⼀个开发⼈员(包括创始⼈)来说都是⼀种全新的语⾔,但它对库、接⼝和⼯具的⽀持将其定位为CockroachDB的正确选择。

也许⼤多数⼈认为Go是⼀个很好的选择,
但是不会Go并没有成为项⽬的代码贡献者的障碍:
任何有Java或C++经验的⼈都能够快速掌握Go语⾔。

我们现在有67个项⽬的参与者,
CockroachDB已经从⼀个空的Github项⽬演变成了⼀个拥有125000⾏⼿写的Go代码,以及有少量的C++和.Proto⽂件的项⽬。

代码复杂度的管理不受语⾔选择的影响,在开源环境中尤为重要。

相对C++和Java来说,Go带来的⽣产效率的提⾼已经很难量化了。

Go语⾔通过它的简单性和正交性使得开发相同效果所需的代码量⼤⼤减少。

强制代码风格,简单的导⼊和⾃动导⼊管理,各种各样的linters,直截了当的(和最⼩的)编程语法集……
Go的所有这些属性对于⼲净、易懂的代码都很重要。

当与Java相⽐时,我们⾮常关注实现⽽不是⾯向对象和抽象:
可以在需要时添加接⼝,⽽不是作为初始的、通常不必要的步骤。

当与C++⽐较时,我们欣赏⾃动内存管理,以及很少有⼀种⽅法可以完成某些事情,
例如使⽤静态(static)和⼀次性初始化器(one-time initializers)。

我们已经很好地利⽤了同步通道,尽管我们注意到有⼀种艺术可以有效地使⽤它们。

当然,更有待观察的是,所有的这些Go代码将如何执⾏。

我们仍在构建CockroachDB的核⼼功能,所以⼤部分优秀的性能我们即将开发。

然⽽,以我们以往的经验,我们将⼀个⼤系统从Java移植到Go,这⼤⼤降低了系统的内存占⽤和垃圾收集开销。

当我们接近并更加关注性能的时候,我们将在后续的⽂章中分享我们的结果。

相关文档
最新文档