事务的处理

事务应该是数据库提供给应用程序的,并且为了隐藏并行问题和软硬件会发生的错误,而使用的一种抽象。下图中提到的方法包含了几个前提,那就是时钟是相对可靠的,虽有延迟,但网络也是相对可靠的,并且保证不会发生拜占庭问题,这样在一定程度上解决了数据一致性的问题。

关于津津乐道的ACID,A代表的是原子性,但是和一般意义上的原子性无关,而是表达的是事务在提交失败时,是可以abort和rollback的。C代表的是一致性,这个很容易误会,因为有所谓的最终一致性,一致性hash,CAP里的一致性,不过这个不但属于数据库,而且也需要应用程序配合。I则是隔离性,反倒这里的隔离性的定义很像一般意义上的原子性。D代表的持久性,这个在单节点的数据库,可能就是把数据保存到磁盘里。

这四个性质如果要完全实现的,嗯,我相信性能问题会迫使你放弃这种奢望。

于是就有了一定程度的trade-off。具体会遇上的问题可以看下面的思维导图。

本文分享自微信公众号 - 鸿的学习笔记(shujuxuexizhilu),作者:鸿

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-01-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 漫谈数据库模型

    数据库是软件世界里的基础。它是现实世界的投射,反应了开发者对现实世界的思考以及对其的抽象;一旦决定了数据库选型,数据库便会对软件/应用造成深远影响,它决定了开发...

    哒呵呵
  • 闲话聊聊事务处理(上)

    如前面的一些文章写的,数据系统不可能保证是完全的可靠的,我们会遇上各种各样的问题,比如数据库或者应用突然崩溃,网络连接断了,并发读和并发写,诸如此类...

    哒呵呵
  • 谈谈 Spanner 和 NewSQL

    关于昨天 Spanner 的文字,有人问 NewSQL 为什么会起名为 New,Spanner 的应用场景又是怎样的?那么这篇就顺着大数据的历史继续聊。

    哒呵呵
  • Base:Acid的替代方案

    作者:DAN PRITCHETT 译者:java达人 来源:https://queue.acm.org/detail.cfm?id=1394128(点击阅读原...

    java达人
  • 浅谈分布式领域CAP理论

    CAP是分布式系统的重要理论,在大型分布式系统中一致性(Consistency),高可用性(High-Availability),分区可容忍性(Partitio...

    加多
  • 创建和使用Windows静态链接库

    首先明确这篇文章的目的,我希望大家能够通过这篇文章了解一下如何在实际工作中创建和使用Windows平台下的静态链接库。关于链接库的概念,希望大家参考维基百科”L...

    用户1221057
  • 非常帅气的Linq to sql

    Linq是.NET 3里新增的东西,我在软件工程课程设计里初步应用到一点,而且主要用在Lambda表达式上,今天算是在好奇心驱动下尝试了一下在数据库方面的应用。

    owent
  • 杨老师课堂_Java教程第二篇之变量及运算符

     * c: 变量使用时有作用域的限制。 public static void main(String[]...

    杨校
  • Deep Learning Book中文第二章 线性代数

    https://github.com/exacity/deeplearningbook-chinese

    用户1908973
  • JAVA|Java入门基本数据类型

    在python中,数据类型基本上,分为整数,浮点数和字符串。并且可以直接使用,不需要其他的操作。但是在JAVA中数据类型的变量类型是多种多样的。光数值类型就有四...

    算法与编程之美

扫码关注云+社区

领取腾讯云代金券