写点什么

Google Cloud Platform 提倡在数据存储中使用强一致性

  • 2018-02-07
  • 本文字数:844 字

    阅读完需:约 3 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

在创建应用平台中,为降低复杂性并减少潜在的软件缺陷,一开始就应以实现数据层中的强一致性为基础。这一前提是Mike Curtiss 最近在Google Cloud Platform 博客上发表的一篇博文中提出的。按Curtiss 的论述:“换句话说,将数据集整体置于缺省提供事务和一致性的数据存储中,会导致错误更少、麻烦更小,并且应用代码也更易于维护。”

在大量的系统中,必须要处理并发数据访问。任何工作于其中的开发人员,对Curtiss 所描述的场景都不会陌生。两个银行账户之间转账,就是一个需要外部一致性的教科书式范例。但是,如果要在应用逻辑中解决这种一致性,可能会导致错误、额外的复杂性,以及其它一些意想不到的复杂性。相比较而言,如果使用了缺省提供外部一致性的数据存储,那么就可以简化应用逻辑。这将使系统更强大,并提高了开发团队的生产力。

Google Cloud Spanner 就是一种以构建强一致性为基础功能的的关系数据库服务。在 Spanner 中,组合了水平可扩展性和强一致性。这引发了一种看法,认为 Spanner违反了CAP 定理

在博客文章中,很好地比较了各种数据存储所使用的一致性级别。Curtiss 也尝试去挑战一些常见假设,例如是否外部一致性会对性能产生不合理的严重影响。但是,鉴于Spanner 全面提供强一致性读,避免了开发人员碰上使用其它大多数数据存储中习以为常的一些限制。

虽然这篇博文意在推销Spanner 的能力,但文中也提供了一些通用的使用指导。首先,应尽可能使用强一致性读。在强一致性读操作不可用的情况下,只要确认妥协(compromises),可以退而求其次使用有限过期(Bounded staleness)一致性读。按理说,强一致性写要比强一致性读更重要。如果系统没有提供强一致性写,那么应用开发人员会承受额外的负担,并且可能会引入数据不一致。

此外,Google Clound Platform 为 Cloud Spanner 外部一致性提供了更多信息。

查看英文原文: Google Cloud Platform Recommends Strong Consistency in Data Stores

2018-02-07 18:001826
用户头像

发布了 391 篇内容, 共 150.8 次阅读, 收获喜欢 257 次。

关注

评论

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

Python爬取微信公众号文章保存到数据库

wjchenge

企业网站搭建避坑指南

姜奋斗

网站 新手指南 企业 网站搭建 避坑

字符串匹配 - Sunday算法

Geek_4z9ami

数据结构与算法 字符串匹配算法

learn go with tests 学习笔记(五)并发

Geek_4z9ami

Go 语言

《effective-go》 学习笔记

Geek_4z9ami

Go 语言

疫情之年 下半年区块链应用落地会加速么?

CECBC

区块链 场景应用落地

以区块链为基础 通证经济是下一代互联网的数字经济

CECBC

区块链 落地应用

Web 开发必须掌握的三个技术:Token、Cookie、Session

华为云开发者联盟

HTTP Token web开发 session Cookie

人生修炼秘籍

xiaoboey

时间管理 人生修炼 知行合一 熵增 时间复利

learn go with tests 学习笔记(三) 指针和错误

Geek_4z9ami

Go 语言

learn go with tests 学习笔记(六)进程同步

Geek_4z9ami

Go 语言

零代码/无代码 vs 低代码 如何分类?如何区别?到底有什么不同?分析超过20款零代码低代码产品

代码制造者

编程 低代码 行业资讯 零代码

learn go with tests 学习笔记(一) hello world

Geek_4z9ami

Go 语言

关于微服务架构思考

Axe

500行代码写一个俄罗斯方块游戏

程序员生活志

RocketMQ源码解析-开篇

Edison

RocketMQ 中间件

Executor看不懂?教你如何盘它

Edison

后端 线程池

nested exception is java.lang.IllegalStateException: refreshAfterWrite requires a LoadingCache异常解决

谙忆

learn go with tests 学习笔记(四)依赖注入

Geek_4z9ami

Go 语言

“啰嗦”是成事唯一正确的方法

霍太稳@极客邦科技

团队管理 个人成长 团队协作 沟通

我是如何参与硅谷顶级开源项目并赚得2500美金

阿水

硅谷 Minio

learn go with tests 学习笔记(七)反射

Geek_4z9ami

反射 Go 语言

政策加持迎来区块链技术应用“红利期”

CECBC

消息疯狂堆积!RocketMQ出Bug了?

Edison

RocketMQ 中间件

MySQL事物-学习笔记

Edison

MySQL 数据库 数据库事务

数据采集能力受限?企业数字化运营如何迈出第1步

易观大数据

踩坑记 | Flutter升级影响了NestedScrollView?

哈利迪

android

learn go with tests 学习笔记(二) 数组与切片

Geek_4z9ami

Go 语言

Netty之旅:你想要的NIO知识点,这里都有!

一枝花算不算浪漫

Netty nio

用户体验(UX)设计≠用户界面(UI)设计

刘华Kenneth

敏捷 设计 UX 用户体验

话题讨论 | 特朗普正式封禁微信,iPhone 和微信二选一?

InfoQ写作社区官方

写作平台 话题讨论

Google Cloud Platform提倡在数据存储中使用强一致性_数据库_Thomas Betts_InfoQ精选文章