数据库简介

数据库的特点

  • 原子性 : 一笔账,要么转了,要么没转
  • 一致性 : 出账入账必须一致
  • 隔离性 : 多人转账不得相互影响
  • 持久性 : 转账一旦发生,持久存在

还有两个:

  • 高可用
  • 高性能

数据库 vs 计算机

服务器:处理器,内存,磁盘,网卡

  • 原子性:计算机只能保证寄存器的原子
  • 一致性:单个服务器上数据一致性比较好做
  • 隔离性:多个事务串行处理隔离性不好做
  • 持久性:磁盘或者固态盘才有持久性
  • 高可用:磁盘年均故障率1%-3%,单个磁盘可用率99%-99.9%
  • 高性能:服务器性能

数据库和互联网

银行 + 商务

网购:一次商务+一次金融

双十一:一天350亿,55s超过1个亿,支付宝2亿笔交易,头一分钟一千万买家上线

黑色星期五:美国19.3亿美元

互联网时代数据库的要求

ACID无法取代

在线金融、网购需要数据库高可用99.999%

可扩展性,性价比

oceanbase

高档服务器,高档存储,高深的数据库软件

传统数据库的高可用:

主库+备库, 共享存储,数据同步备库

主备同步三种模式:

  • 最大同步,可用性太差
  • 最高性能,一致性太差
  • 最大可用,尽力同步,备库应答OK,超时则容错,有丢失风险

银行可靠性依赖于物理可靠性

传统数据库性价比不高,硬件,软件很贵

oceanbase 用了普通服务器,水平扩展 = 云计算+关系数据库 , 存储大部分是固态盘

性能+可用性+扩展性

性能

  • 机械盘读 : 机械磁盘随机读 100-300次/秒(IOPS)
  • SSD随机读: 几万次每秒

  • 机械盘写:100-300次/秒

  • 数据库写入放大:每次修改100B导致4k块的修改,oracle 8k mysql 16k, 产生几十倍的放大效应
  • 固态盘:写入放大,先擦后写,有时候一次擦十几兆,需要先读再迁再擦再写

全内存数据库

  • 性能高,性价比低,容量小
  • 适用需要极高性能且数据量小的业务

Oceanbase

内外存混合数据库

内存:热数据,频繁修改

外存:冷数据

性能略逊,容量大,性价比高

消除传统数据库写入放大

高可用:如何以低可靠硬件实现

oceanbase Milestone:

淘宝收藏夹->双集群(可以升级改bug对业务透明)-> OLAP功能 –> SQL支持 –> 三集群(分布式投票)

oceanbase应用

  • 稳定可靠
  • 可在线扩展,业务增长过快
  • 高性能低成本
  • 不锁表创建索引

oceanbase质量保证

严格的c/c++编码规范 – 资源申请者负责释放 – 单入口单出口 – 定长内存管理 – 禁用全局变量,goto – 严格限制使用stl – 统一编码风格

无处不在的crc

oceanbase数据校验

  • 磁盘读写,每个记录带64位CRC
  • 网络传输:每个网络包带64位CRC
  • 多副本多个crc
  • 修改增量多副本:64位CRC校验
  • redolog:每条带64位crc
  • 每个表每个列64位crc

灰度升级

小结:

数据库是人类伟大智慧的结晶

机会:

  • 云计算技术
  • 网购繁荣
  • 中国经济腾飞
  • ssd普及
  • 优秀技术人才

本文版权归CXH_ME所有,原创不易,人艰不抄,转载还请注明出处,谢谢