春争日,夏争时,扫码抽取夏日礼包!!! 了解详情
写点什么

NoSQL 中的分布式、容错事务

  • 2015 年 1 月 15 日
  • 本文字数:1117 字

    阅读完需:约 4 分钟

5 年前,术语 NoSQL 才刚刚开始出现,那时很多 NoSQL 数据库的版本都还不到1.0,对于 CAP 理论来说,众多 NoSQL 数据库都选择了可用性要高于一致性的做法。 ACID 是一个沉重的负担,而 BASE 则被认为是未来的发展方向。时至今日,社区已经逐渐成熟起来,一些天花乱坠的宣传也都不见了踪迹,新一轮的 NoSQL 数据库开始寻求重新定义我们对 NoSQL 的期待,随之而来的是分布式、容错事务又开始出现在了人们的视野中。

向分布式、容错事务领域的进军起始于 2012 年秋季,那时 Google 发布了 Spanner 数据库。Spanner 是个全局分布式、容错、事务型的 NoSQL 数据库;这一系列属性在之前则被认为是自相矛盾的。不过,Google 击碎了人们的这种误解,宣称他们已经在生产环境下使用该数据库一年多时间了。

就在 Google 宣布 Spanner 数据库的几个月后, HyperDex 团队默默地发布了 Warp 扩展,它为 HyperDex 带来了分布式、容错的事务功能。这标志着对这种事务的首个开源实现的发布。趋势开始发生了转移,不过还有很长的路要走。

2013 年 5 月, Kyle Kingsbury RICON 上谈到了 Jepsen 。在演讲中,Kingsbury 披露了各种 NoSQL 数据库在各种失败情况下的一系列缺陷。甚至诸如 MongoDB Redis (一般情况下人们都认为他们可以保证一致性)这样的数据库都无法信守其承诺。Kingsbury 的工作使得社区开始更多地关注于测试与形式化设计,在选择可用性优于一致性时能更好地理解这种折衷。

出于对一致性的密切关注, FoundationDB 发布了其键值存储的 1.0 版,这是第一个拥有分布式、容错事务支持的私有 NoSQL 数据库。FoundationDB 团队深刻理解严格测试的必要性,同时对其测试框架 Lithium 给予了高度评价,这使得 FoundationDB 能够确保 ACID 特性。后来他们又可以通过 Jepsen 对 FoundationDB 进行测试

去年又涌现出了两款将支持分布式、容错事务作为设计目标的开源NoSQL 数据库。 CockroachDB 尝试模仿 Spanner 的地理位置复制事务,它于去年初启动; Treode 则在去年 6 月发布了最初的 0.1 版。这两个项目都认真地采取了形式化设计,并吸取了很多分布式系统的学术研究成果。

这些事务型数据库已经逐步对 NoSQL 世界产生了影响,我们看到一致性的 NoSQL 数据库正在不断改进自己的承诺。比如说,Redis 就面临着持续的压力,在构建器分布式功能时要求专注于形式化设计与测试。最近, Tokutek 为 MonogoDB 发布了其新的 Ark 一致性算法。Ark 基于 Raft 协议,旨在修复 MongoDB 已知的一致性问题。

虽然现在还是 Treode 与 CockroachDB 的早期发展时段,但已经有不少公司在生产环境中使用了FoundationDB 与HyperDex Warp。分布式、容错事务将会扎根于NoSQL,我们将会看到其产生的影响。

查看英文原文: Distributed, Fault Tolerant Transactions in NoSQL

2015 年 1 月 15 日 00:393401
用户头像

发布了 88 篇内容, 共 249.7 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

mPaaS x Menxlab | 1024程序员节:Talk is cheap,Show me the AppID

蚂蚁集团移动开发平台 mPaaS

程序员 开发者 mPaaS 1024

自动化测试框架类型,你知道几种?此处介绍5种比较常见的

软测小生

软件测试 自动化测试框架 软件自动化测试

架构师训练营第五周学习总结

尹斌

DDIA 读书笔记(2)数据模型的存储与检索

莫黎

读书笔记

1分钟带你get React setState 面试要点

Leo

面试 大前端 React setState

解析 CloudQuery 审计分析功能

CloudQuery社区

数据库 sql 安全 工具软件

Microsoft Azure机器学习采用NVIDIA AI为Word编辑器提供语法建议

JavaScript 类型 — 重学 JavaScript

三钻

Java 大前端

LeetCode题解:98. 验证二叉搜索树,递归中序遍历过程中判断,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

数据湖探索DLI新功能:基于openLooKeng的交互式分析

华为云开发者社区

数据 处理

架构训练营第一周学习小结

李日盛

年纪轻轻怎么就卵巢早衰了?试管可帮忙!

Geek_65d32f

试管 三代试管

vivo 商城前端架构升级—前后端分离篇

vivo互联网技术

Java 大前端 前后端分离

攻克金融系统开发难点,借助SpreadJS实现在线导入Excel自定义报表

葡萄城技术团队

SpreadJS 在线导入excel

架构师训练营第一周课后作业

李日盛

Go语言内存管理三部曲(三)图解GC算法和垃圾回收原理

网管

内存管理 垃圾回收 GC GC算法 Go 语言

AI让远程交流“更清晰”:GAN消除视频通话中的抖动

学习总结

饺子

架构必修:领域边界划分方法--职责驱动设计(RDD)

马迪奥

架构 领域 架构师 RDD

机器学习是什么?

马同学

学习

趣味科普丨一文读懂云服务器的那些事儿

华为云开发者社区

镜像 服务器 服务

GitLab用户切换引发的某程序员“暴动”,怒而开源项目源码

小Q

Java git 学习 开发 代码仓库

iOS性能优化 — 一、crash监控及防崩溃处理

iOSer

性能优化 ios开发 Crash 监控及防崩溃处理

架构师训练营 1 期 -- 第五周作业

曾彪彪

极客大学架构师训练营

typora增强-mac

老菜鸟

Typora

千万不要往 Shell 里粘贴命令!

大道至简

命令行

吃透阿里大佬整理的Java面试要点手册,成功五面进阿里(二本学历)

Java架构追梦

Java 学习 架构 面试 核心知识点整理

ArCall功能介绍手册

anyRTC开发者

ios 音视频 WebRTC RTC 安卓

Flink窗口算子-6-8

小知识点

scala 大数据 flink

数据结构与算法系列之链表操作全集(一)(GO)

书旅

数据结构 数据结构和算法 Go 语言

学了那么多 NoSQL 数据库 NoSQL 究竟是啥

哈喽沃德先生

数据库 nosql 非关系型数据库

NoSQL中的分布式、容错事务_DevOps_Benjamin Darfler_InfoQ精选文章