发布于 2019

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

    2019-01-13 @ 文章

    对于无状态的应用服务而言,容器是一个相当完美的开发运维解决方案。然而对于带持久状态的服务 —— 数据库来说,事情就没有那么简单了。生产环境的数据库是否应当放入容器中,仍然是一个充满争议的问题。 站在开发者的角度上,我非常喜欢Docker,并始终相信Docker是未来软件开发部署运维的标准方式,而Kubernetes则是事实上的下一代“操作系统”。但站在DBA的立场上,我认为就目前而言,将生产环境数据库放入Docker中仍然是一个馊主意。 Docker解决什么问题? 让我们先来看一看Docker对 …

    更多

发布于 2018

  • 理解时间

    2018-12-11 @ 文章

    时间是个很玄妙的东西,看不见也摸不着。我们都能意识到时间的存在,但要给它下个定义,很多人也说不上来。本文当然不是为了探讨哲学问题,但对时间的正确理解,对正确处理工作生活中的时间问题很有帮助(例如,计算机中的时间表示与时间处理,数据库,编程语言中对于时间的处理)。 0x01 秒与计时 时间的单位是秒,但秒的定义并不是一成不变的。它有一个天文学定义,也有一个物理学定义。 世界时(UT1) 在最开始,秒的定义来源于日。秒被定义为平均太阳日的1/86400。而太阳日,则是由天文学现象定义的:两次连续正午 …

    更多

  • PgSQL开发规约

    2018-06-20 @ 文章

    0x00背景 没有规矩,不成方圆。 PostgreSQL的功能非常强大,但是要把PostgreSQL用好,需要后端、运维、DBA的协力配合。 本文针对PostgreSQL数据库原理与特性,整理了一份开发规范,希望可以减少大家在使用PostgreSQL数据库过程中遇到的困惑。 你好我也好,大家都好。 0x01 命名规范 无名,万物之始,有名,万物之母。 【强制】 通用命名规则 本规则适用于所有对象名,包括:库名、表名、表名、列名、函数名、视图名、序列号名、别名等。 对象名务必只使用小写字 …

    更多

  • PG好处都有啥

    2018-06-10 @ 文章

    PostgreSQL的Slogan是“世界上最先进的开源关系型数据库”,但我觉得这口号不够响亮,而且一看就是在怼MySQL那个“世界上最流行的开源关系型数据库”的口号,有碰瓷之嫌。要我说最能生动体现PG特色的口号应该是:一专多长的全栈数据库,一招鲜吃遍天嘛。 全栈数据库 ​ 成熟的应用可能会用到许许多多的数据组件(功能):缓存,OLTP,OLAP/批处理/数据仓库,流处理/消息队列,搜索索引,NoSQL/文档数据库,地理数据库,空间数据库,时序数据库,图数据库。传统的架构选型呢,可能会组合使用多 …

    更多

  • 区块链与分布式数据库

    2018-06-09 @ 文章

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

    更多

  • 一致性:过载的术语

    2018-05-08 @ 文章

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

    更多

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

    2018-04-20 @ 文章

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

    更多