RDBMS实现技术的难点--专业的DBA需要了解哪些

      系统软件中,RDBMS技术实现和运用掌握,可以说是最为困难的一个,甚至不是之一。

      操作系统内核,涉及底层技术和算法,不同操作系统的发展殊途同归,在关键的数据结构和算法上的选择基本是一致,不那么容易让人产生混淆。linux的迅速发展中就借鉴了很多Unix/Solaris的技术。

      不同的关系数据库,对于关键技术的实现由很大不同,提高了使用者的技术门槛,其使用方法和试用场景也会有所不同。本文仅从下面几点分析这些技术难点

          ACID事务支持

  • 持久性就要将数据写到磁盘上。不同的持久化存储介质其特性也相差很多,带电池的raid卡,FC阵列,pcie的ssd卡等等,存储的stripe大小,对数据库block大小的选择有很大影响。
  • 磁盘比内存慢很多,磁盘顺序写性能远远好于随机写。因此数据库收到写请求后首先会写一个顺序的log文件。同时为了事务的原子性,还需要在log中记录是否提交的标记。由于操作系统内核和存储设备的多级cache问题,block落盘的乱序问题,数据库还需要考虑log落盘的顺序和原子性。
  • 这就涉及了redolog undolog的实现,不同数据库实现还有所不同,oracle是分开的,mysql记录在一起。
  • 为了支持事务的隔离,同时考虑到性能因素,不同数据库都实现了不同的隔离级别,且不同数据库对于隔离级别的定义相差很大;同一数据库对于不同的隔离级别,采用的不同的技术,有基于MVCC的快照技术和基于2PC的悲观锁。MVCC实现时,版本数据量的选择和回收也有所不同;选择不同的隔离级别对于性能影响很大,同时不同的业务场景,对于事务隔离级别或者表设计,sql书写的要求也有很大不同。

        存储引擎

  • 不同数据库支持的数据结构和索引类型有所不同;不同的应用对于索引的要求相差很大。
  • 数据表和索引组织方式有所不同,堆表,索引表,B+树索引,稀疏索引,对于不同的读写比例,性能不同
  • 复杂的查询优化技术,hash join nested loop join,最初的rule based到cost based
  • 磁盘数据库还需要考虑对于热点数据的智能内存cache
  • 总之,针对不同的表结构和索引选择,sql子集,以及查询优化器,表的设计和sql书写风格有很大差异。
高可用备份技术
  • 同步部分,还是异步部分,还是半同步备份,需要根据对数据一致性的要求和性能做trade off(半同步、异步复制可能导致数据不一致)
  • 同步数据出现不一致时候,如果进行补救
  • 库级别同步还是库粒度还是表的粒度。
  • mysql就有多种方案,mysql HA,percona NDB等
  • oracle高可用有RAC技术,备份Golden Gate和Data Gurad两种
  • 阿里、京东等大型电商,为了实现双十一多机房多库多活,mysq的细粒度的主从复制方面肯定要做了不少工作。阿里的表级别同步确认做过了,京东做到什么程度不确认。
横向扩展
  • share nothing的扩展,例如基于proxy的data shard,淘宝的TDDL,DRDS,开源的mycat
  • share everything的扩展,oracle RAC

综上所述,作为DBA,需要了解哪些知识呢,从底层向上看

  1. 存储硬件的特性
  2. 操作系统内核内存管理和IO调度的知识
  3. 数据库存储引擎设计和读写特性,各种数据结构
  4. 事物的隔离级别
  5. 查询优化器对于SQL语句的执行技术的优化原理
  6. 不同的高可用技术对于性能的影响
  7. 扩展性方案

        以上几点,不同的数据库的实现,都有很大的差别,带来不少学习的难度。甚至对于第一点,不同的数据库也存在差别。fusionIO的SSD卡对于mysql double write的优化问题,硬件提供atomic 写的原语,操作系统封装之后提供给mysql使用,mysql在将buffer数据写入数据文件时候,只写一次就行了,不需要保留两个副本。笔者曾经向国内某oralce ACE oracle是否有类似的技术优化,大牛对mysql的技术并不是很了解。

       精通两种以上数据库的DBA还是凤毛麟角,事实上,能对数据结构、算法、内核或者硬件有一定了解的DBA就已经是比较资深的DBA了。如果是研发DBA,还需要相当的编程技巧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值