BT

你的观点很重要! 快来参与InfoQ调研吧!

CockroachDB :一个可伸缩的、跨地域复制的,且支持事务的数据存储

| 作者 Benjamin Darfler 关注 0 他的粉丝 ,译者 赵震一 关注 0 他的粉丝 发布于 2014年9月1日. 估计阅读时间: 3 分钟 | ArchSummit社交架构图谱:Facebook、Snapchat、Tumblr等背后的核心技术

CockroachDB是一个开源的数据存储项目,该项目的开发团队最近宣布发布了该项目的第一个alpha版本。受到Google的Spanner 项目的启发,CockroachDB旨在打造一个开源的、可伸缩的、跨地域复制且兼容ACID的数据库,这在当前的开源社区中还是非常少见的。

一直以来,NoSQL数据存储都通过在多个数据中心之间进行异步复制来支持多数据中心的配置。这是在 MongoDB中所推崇的方式,这同样也是 Riak, CassandraHBase中唯一可用的方式。然而,异步复制阻碍了在多个数据中心之间的一致性保证。此外,大多数第一代NoSQL数据存储都无法支持任何跨键(key)的事务。近来,像FoundationDBHyperDex这些新系统在一开始就被设计用来支持跨键的事务。然而,这些系统并不能很好地支持多数据中心的配置。

在这样的背景下,Google在2012年公开了他们的Spanner系统,这是一个同时支持事务和多数据中心一致性的系统,该系统为这一领域打开了新的局面。Spanner的论文给大家带来了启发,但是一直都没有人对其进行实现。直到CockroachDB团队开启了他们的开源项目,他们尝试实现并复制Spanner中的那些富有挑战的混合特性。

规范的草案中,在Google参与 Colossus文件系统开发工作的 Spencer Kimball对CockroachDB进行了描述,CockroachDB支持ACID的事务语义和版本化的值,并将其作为头等特性。其主要的设计目标便是全局的一致性和生存能力,所以该数据存储也由此得名(译者注:Cockroach是蟑螂的意思,即打不死的小强)。… Cockroach实现了一个单一的、整体排序的map(键值映射),并且键和值都是字节字符串。

CockroachDB的事务特性由两种方式提供。Kimball解释说

如果逻辑上的一次变化所影响的键全部落在同一范围(range)内,那么原子性和一致性可以由Raft算法来保障,这是最快的提交路径。否则,会在受影响的范围之间使用一个非阻塞的分布式提交协议。Cockroach提供了快照隔离(snapshot isolation,简称SI)和顺序的快照隔离(SSI)语义…SSI是默认的隔离级别;客户端必须有意识地在正确性和性能之间做出选择。

该非阻塞分布式提交协议仍然处于发展之中,而Kimball则引用了悉尼大学耶鲁大学的论文,并且特别关注来自Yahoo! 的一篇论文,并将其作为实现SSI语义的潜在选择。

当前的alpha版本提供了一个所需功能的非常小的子集。集群的初始化和加入、gossip网络和一个基础键值的REST API目前已经得到了支持。但是raft一致性算法、范围的分裂或事务功能目前还没有得到支持。该项目是由Go语言编写的,而他们目前正在寻找代码贡献者

查看英文原文:CockroachDB: A Scalable, Geo-Replicated, Transactional Datastore

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT