CockroachDB学习笔记——[译]Hello World
- 原文链接:https://www.cockroachlabs.com/blog/hello-world/
- 原作者:Spencer Kimball
- 原文日期:Jun 4, 2015
- 译:zifeiy

数据库是世界上每个企业的心脏,支撑着小至几个简单的表格,大到成千上万台服务器。
并且他们进化的速度非常快。
在蟑螂实验室(Cockroach Labs)的大多数工程师在他们的职业生涯中都一直在维护并观察这些数据库的运行状态,当他们发现数据库出现这样或那样的瓶颈的时候,他们便会着力解决这些出现的瓶颈问题。
但是首先,为什么要选择“COckroach”?
虽然他的外表长的很荒诞,但是请相信他有一个强韧的内心。
你听说过蟑螂会是世纪末日后唯一的幸存者吗?
现代数据库系统通过模仿自然界最古老和最成功的设计而获得了很多收获。
生存,复制,扩散。
这是古老的地质时代中蟑螂的模型,当然也是我们的。
即使“蟑螂”这个听上去感觉会被遗忘,但是也无所谓啦。
在20世纪初,当我们还在Google工作的时候,我们很快就遇到了在行业当中非常普遍的数据库的问题:应用程序级别的分片(application-level sharding)。
如果你有大量的数据(可能是TB级别的甚至是PB级别的)要存储到数据库中应该怎么办呢?
很简单,解决的办法就是:你把这些数据切分出来,就像切分蛋糕一样,然后把一块蛋糕放到一个数据库里,再把另一块蛋糕放到另一个数据库里,如此循环,尽量多地切分蛋糕,然后分到不同的数据库里(当然我这里说的蛋糕就是分片)。
但是如果数据的增长速度非常快怎么办?
简而言之,大量的数据面临的挑战是:更多的分片,更多的问题,在分片操作时客户将不能访问数据库,服务器过载,安装复杂度也会越来越大。
我们对大规模数据面临的困难提供了良好的鉴别能力。
快进到20世纪中期,那个时候Google迎来了NoSQL的运动。
为了简单起见,NoSQL牺牲了传统关系型数据库(RDBMS)的一些性能。
一个更简单的设计允许商品硬件透明的可扩展性。
自此数据库开发可以像使用单个数据库一样,但是这个数据库背后的数据库集群所能支持的数据量却能达到闻所未闻的大小。
但是我们观察到,NoSQL的这些简化最终成为了开发人员的致命弱点,因为在使用NoSQL的过程中,将使用越来越复杂的应用程序逻辑来处理NoSQL所缺失的一些功能,比如事务。
NoSQL面临的这些问题需要下一代的新的数据库系统设计来解决一致性和事务性的问题。
在2012年我们团队离开了Google取创建一个图片共享平台Viewfinder。
在这段时期,为数十亿用户提供服务的梦想并不是白日做梦,我梦有一个远大的梦想。
但是当我们为我们优秀的基础设施寻求一种开源的解决方案的时候,才发现理想和显示之间存在着一条宏大的沟。
(译者的理解:他们想在开源产品中寻找一款跟在Google的时候用起来很好的NewSQL产品,但是没有发现开源界有,然后他们就准备自己造一个)
我们(在使用市面上的这些开源NoSQL产品时)犯过懵逼,体面的搭建,有的时候使用复杂的解决办法也是可能的,在必要的地方使用管道胶带。
事实证明,调试这些NoSQL产品并不是我们的首要目标,我们根本没有那么多时间来解决使用这些NoSQL产品时遇到的问题(破产品bug太多了!!!)。
所以我们决定以建立一款优秀的分布式数据库产品为我们的首要使命。
于是乎我们建立了蟑螂实验室(Cockroach Labs)并且确立了一个明确的目标:建立一个我们多年以来就像建立的数据库产品,并且使他在建立之初就是开源的。
这项任务很简单,并且我们非常骄傲的承诺:让数据变得简单(Make Data Easy)。
我们想要的这个数据库支持伸缩性,容灾性,始终是一致的,并且支持抽象,以使得他更易于使用。
我们宁愿花时间来快速构建及迭代一个新的产品,也不愿意对现有数据库的缺陷进行工程解决方案。(译者的理解:作者再次强调你们这些开源NoSQL产品bug太多了,该bug的时候还不如重新做一个没啥bug的数据库呢)
而这个数据库(CockroachDB)将会是我们在成立下一家公司时所使用的数据库。
并且时我们下下个公司,下下下个公司……所使用的数据库。
如今,我们为搭建推出蟑螂DB。
使用他,
构建他,
为他做出Contribute吧!
Ben, Peter & Spencer
CockroachDB学习笔记——[译]Hello World的更多相关文章
- CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储
CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...
- CockroachDB学习笔记——[译]如何优化Go语言中的垃圾回收
原文链接:https://www.cockroachlabs.com/blog/how-to-optimize-garbage-collection-in-go/ 原作者:Jessica Edward ...
- CockroachDB学习笔记——[译]在CockroachDB中如何让在线模式更改成为可能
原文链接:https://www.cockroachlabs.com/blog/how-online-schema-changes-are-possible-in-cockroachdb/ 原作者: ...
- CockroachDB学习笔记——[译]Cgo的成本与复杂性
原文链接:https://www.cockroachlabs.com/blog/the-cost-and-complexity-of-cgo/ 原作者:Tobias Schottdorf 原文日期:D ...
- CockroachDB学习笔记——[译]为什么Go语言是CockroachDB的正确选择
原文链接:https://www.cockroachlabs.com/blog/why-go-was-the-right-choice-for-cockroachdb/ 原作者:Jessica Edw ...
- CockroachDB学习笔记——[译]The New Stack:遇见CockroachDB,一个弹性SQL数据库
原文链接:https://www.cockroachlabs.com/blog/the-new-stack-meet-cockroachdb-the-resilient-sql-database/ 原 ...
- CockroachDB学习笔记——[译]CockroachDB是如何进行分布式原子事务的
原文:How CockroachDB Does Distributed, Atomic Transactions 原文链接:https://www.cockroachlabs.com/blog/how ...
- CockroachDB学习笔记——[译]Scaling Raft
原文链接:https://www.cockroachlabs.com/blog/scaling-raft/ 原作者:Ben Darnell 原文日期:Jun 11, 2015 译:zifeiy 在Co ...
- CockroachDB学习笔记——对此的选择
无意间了解到TiDB,然后知道了他是一款国产团队开源的NewSQL数据库, 看了一下官网,有很多中文的文档和技术分享挺不错的. 但是安装起来好像挺麻烦的说. 测试的硬件环境 也吓死我了,我只有一台笔记 ...
随机推荐
- python 学习笔记_1 pip安装、卸载、更新包相关操作及数据类型学习
'''prepare_1 pip安装.卸载.更新组件type 各数据类型''' py -3 -m pip py -3 -m pip listpy -3 -m pip show nosepy -3 -m ...
- jmeter分布式运行
一.设置windows远程启动 1).Jmeter分布式测试时,选择其中一台作为控制机(Controller),其它机器做为代理机(Agent). 2).执行时,Controller会把脚本发送到每台 ...
- JAVA遇见HTML——JSP篇(1、JAVA WEB简介)
比如淘宝.新浪.搜狐.网易就是Web应用程序
- Oracle自动化安装脚本-part02-亲试ok
此为网络配置文件 network.conf [PUBLIC-IP] IP-LIST:192.168.7.198,192.168.8.221 HOSTNAME-LIST:mysql-198,RAC2 ...
- 表达式* ptr ++和++ * ptr是否相同?
两种表达都不同.让我们看一个示例代码来理解两个表达式之间的区别. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <stdio.h> int m ...
- Pandas to_sql TypeError: sequence item 0: expected str instance, dict found
问题介绍 打印了一下数据格式,并未发现问题.如果说是字典实例引起的. 我猜测也是extra字段引起的,因为extra字段是一个json字段.根据网上的提示要对这样的格式进行强转str. 其他发现:pd ...
- 2019牛客多校D move——乱搞&&思维题
题意 给定 $n$ 个物品,体积分别为 $v_i$,现有 $K$ 的容积一样的箱子,按如下策略装入物品:每次选取尽可能大的装入(较大的不能装入时可以向小的找),依次装入箱子. 分析 首先,不具有严格的 ...
- git 在eclipse中忽略上传文件
在我们的工程项目中,有些文件是不需要上传到服务器上的,比如那些 */target/ */bin/*.settings/*.classpath*.gitignore*.project 我们将这些文件添加 ...
- TFS命令行
tfs命令工具: https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/9s5ae285 ...
- Vue Parent Send Ajax Data to Child Component
Vue 父组件ajax异步更新数据,子组件props获取不到 2018年06月26日 09:25:06 哎哟嘿 阅读数 3585 当父组件 axjos 获取数据,子组件使用 props 接 ...