Posts in 2023
  • 微服务是不是个蠢主意?

    2023年05月07日 in 数据库

    微信公众号原文 亚马逊的Prime Video团队发表了一篇非常引人注目的案例研究[2] ,讲述了他们为什么放弃了微服务与Serverless架构而改用单体架构。这一举措让他们在运营成本上节省了惊人的 90%,还简化了系统复杂度,堪称一个巨大的胜利。 但除了赞扬他们的明智之举之外,我认为这里还有一个重要洞察适用于我们整个行业: “我们最初设计的解决方案是:使用Serverless组件的分布式系统架构… 理论上这个架构可以让我们独立伸缩扩展每个服务组件。然而,我们使用某些组件的方式导致我们在大 …

    Read more

  • 分布式数据库是不是伪需求?

    2023年05月07日 in 数据库

    微信公众号原文 随着硬件技术的进步,单机数据库的容量和性能已达到了前所未有的高度。而分布式(TP)数据库在这种变革面前极为无力,和“数据中台”一样穿着皇帝的新衣,处于自欺欺人的状态里。 太长不看 互联网的牵引 分布式的权衡 新硬件的冲击 伪需求的困境 迷茫下的挣扎 Reference 太长不看 分布式数据库的核心权衡是:“以质换量”,牺牲功能、性能、复杂度、可靠性,换取更大的数据容量与请求吞吐量。但分久必合,硬件变革让集中式数据库的容量与吞吐达到一个全新高度,使分布式(TP)数据库失去了存在意 …

    Read more

Posts in 2021
  • 是时候和GPL说再见了

    2021年09月16日 in 数据库

    原文由 Martin Kleppmann 于2021年4月14日发表,译者:冯若航。 Martin Kleppmann是《设计数据密集型应用》(a.k.a DDIA)的作者,译者冯若航为该书中文译者。 本文的导火索是Richard Stallman恢复原职,对于自由软件基金会(FSF)的董事会而言,这是一位充满争议的人物。我对此感到震惊,并与其他人一起呼吁将他撤职。这次事件让我重新评估了自由软件基金会在计算机领域的地位 —— 它是GNU项目(宽泛地说它属于Linux发行版的一部分)和以GNU通用 …

    Read more

Posts in 2019
  • 容器化数据库是个好主意吗?

    2019年01月13日 in 数据库

    前言:这篇文章是19年1月写的,四年过去了,涉及到数据库与容器的利弊权衡依然成立。这里进行细微调整后重新发出。明天我会发布一篇《数据库是否应当放入K8S中?》,那么今天就先用这篇老文来预热一下吧。微信公众号原文 对于无状态的应用服务而言,容器是一个相当完美的开发运维解决方案。然而对于带持久状态的服务 —— 数据库来说,事情就没有那么简单了。生产环境的数据库是否应当放入容器中,仍然是一个充满争议的问题。 站在开发者的角度上,我非常喜欢Docker,并相信容器也许是未来软件开发部署运维的标准方式。 …

    Read more

Posts in 2018
  • 理解时间:闰年闰秒,时间与时区

    2018年12月11日 in 数据库

    微信公众号原文 前几天出现了四年一遇的闰年 2月29号,每到这一天,总会有一些土鳖软件出现大翻车。这种问题如果运气不好,可能要等上四年才会暴露出来。 比如今天新鲜出炉的:禾赛科技激光雷达和新西兰加油站都因为闰年Bug无法使用。 聊一聊闰年,闰秒,时间与时区的原理,以及在数据库与编程语言中的注意事项。 0x01 秒与计时 时间的单位是秒,但秒的定义并不是一成不变的。它有一个天文学定义,也有一个物理学定义。 世界时(UT1) 在最开始,秒的定义来源于日。秒被定义为平均太阳日的1/86400。而太阳 …

    Read more

  • 并发异常那些事

    2018年06月19日 in 数据库

    微信公众号原文 | 知乎原文 并发程序很难写对,更难写好。很多程序员也没有真正弄清楚这些问题,不过是一股脑地把这些问题丢给数据库而已。并发异常并不仅仅是一个理论问题:这些异常曾经造成过很多资金损失,耗费过大量财务审计人员的心血。但即使是最流行、最强大的关系型数据库(通常被认为是“ACID”数据库),也会使用弱隔离级别,所以它们也不一定能防止这些并发异常的发生。 比起盲目地依赖工具,我们应该对存在的并发问题的种类,以及如何防止这些问题有深入的理解。 本文将阐述SQL92标准中定义的隔离级别及其缺 …

    Read more

  • 区块链与分布式数据库

    2018年06月09日 in 数据库

    知乎原文 区块链的本质,想提供的功能,及其演化方向,就是分布式数据库。 确切的讲,是拜占庭容错(抗恶意节点攻击)的分布式(无领导者复制)数据库。 如果这种分布式数据库用来存储各种币的交易记录,这个系统就叫做所谓的“XX币”。例如以太坊就是这样一个分布式数据库,上面除了记载着各种山寨币的交易记录,还可以记载各种奇奇怪怪的内容。花一点以太币,就可以在这个分布式数据库里留下一条记录(一封信)。而所谓智能合约就是这个分布式数据库上的存储过程。 从形式上看,区块链 与 预写式日 …

    Read more

  • 一致性:过载的术语

    2018年05月08日 in 数据库

    知乎原文 一致性这个词重载的很厉害,在不同的语境和上下文中,它其实代表着不同的东西: 在事务的上下文中,比如ACID里的C,指的就是通常的一致性(Consistency) 在分布式系统的上下文中,例如CAP里的C,实际指的是线性一致性(Linearizability) 此外,“一致性哈希”,“最终一致性”这些名词里的“一致性”也有不同的涵义。 这些一致性彼此不同却又有着千丝万缕的联系,所以经常会把人绕晕。 在事务的上下文中,一致性(Consistency) 的概念是:对数据的一组特定陈述必须始 …

    Read more

  • 为什么要学习数据库原理

    2018年04月20日 in 数据库

    微信公众号原文 | 知乎原文 计算机系为什么要学数据库原理和设计? 我们学校开了数据库系统原理课程。但是我还是很迷茫,这几节课老师一上来就讲一堆令人头大的名词概念,我以为我们知道“如何设计构建表”,“如何mysql增删改查”就行了……那为什么还要了解关系模式的表示方法,计算,规范化……概念模型……各种模型的相互转换,为什么还要了解什么关系代数,什么笛卡尔积……这些的理论知识。我十分困惑,通过这些理论概念,该课的目的或者说该书的目的究竟是想让学生学会什么呢? 只会写代码的是码农;学好数据库,基本 …

    Read more