分布式 SQL 数据库 Cockroach DB 遵循软件产品以动物命名的模式。近日,该数据库的第一个生产就绪版本 1.0 发布。
许多人将 Cockroach DB 视为 Google Spanner 的开源版本。后者是一个强一致性、横向可扩展的 RDBMS,它起初是一个服务于谷歌服务的内部项目,近日加入了谷歌云。和 NuoDB 一样,这些数据库都致力于解决同样的问题,那个 NoSQL 数据库在过去十年中设法从不同角度解决的问题。高可用性、线性可扩展性、强一致性、运行中复制技术以及快速响应和呈指数增长的数据集,所有这些问题都是数据库供应商数十年来致力于解决的问题。
NoSQL 供应商采用的一种方法是放松关系型数据库强加的部分约束,一致性、可用性或分区容错性,就像 CAP 理论所描述的那样。SQL 支持即使存在,大多数时候也是受限的。
另一方面,有时称为“NewSQL”数据库的方法是从头设计一种完全兼容 SQL 的数据库系统,并且仍然设法满足上述所有需求。
构建分布式数据库的其中一个最大的挑战是事件顺序。一个事务中的有序操作可以确保读取者和写入者有一致的数据视图。
根据谷歌发表的论文,Google Spanner 使用了 TrueTime 概念中的 GPS 和原子钟在几毫秒内实现不同节点之间的同步。Cockroach 的全局排序方法使用了他们在博客中描述的混合逻辑时钟。据称,两种方法都违背了CAP 理论的定律,就是在一个分布式系统中,我们无法通过稍微不同的实现同时保证一致性、高可用性和分区容错性。
Cockroach 的第一个生产就绪版本还提供了零宕机(在线)模式修改、次级索引和外键支持。在提供高可用性的同时,Cockroach 还重点强调了一致性,使用每个数据集三个或三个以上的活动副本,所有这些副本都可以同时读 / 写。除了增加高可用性外,地理上分散的客户端可以连接到最近的服务器进行写入,确保每个客户端的状态在全球范围内都是一致的,在这种情况下,该“多活可用性”模型也很有用。Cockroach 的其中一个客户是一家大型游戏公司,他们正积极地在生产环境中使用这项特性。Cockroach 的主要客户还包括百度,他们积极地用它处理每秒23000 多次的写入操作。
Cockroach DB 的一大卖点是,它不需要重写 MVC 代码或者使用一些中间层翻译 ORM 和数据库查询,因为它提供了面向许多流行框架(如 Ruby on Rails、Hibernate、Python 和 Node 的 Sequelize)的连接器及示例代码。 GitHub 上提供了详细的架构图,企业客户可以获得商业支持。复杂 SQL 联合查询还不够优化,它的名字也让许多用户心情复杂,但这没有阻止Cockroach 于月初在红点创投领投的B 轮融资中获得了2700 万美元。
查看英文原文: Cockroach DB Reaches 1.0
评论