【IT168 专稿】一个云数据库专家需要具备哪些素质?以下是美国专家Sean Hull的分享。Sean Hull是MySQL和Oracle数据库、Web性能和可扩展性、EC2、Linux和互联网架构领域的著名作家、讲师和顾问,他是《Oracle & Open Source》一书的作者,并多次在会议和论坛担任演讲嘉宾。以下是文章内容:
尽管在一些公司,DBA的角色是完全独立的,还有其他Linux和运营团队管理这些服务器。但是我们同样会看到一些Oracle或MySQL DBA的面试题中会涉及以下内容,下面来看看DBA需要掌握哪些技术知识。
1.什么是RAID?哪种类型最好?
RAID是在一台服务器上共享整个磁盘阵列的方法。像Oracle和MySQL这样的数据库在磁盘上进行大量读写操作。这时,如果有更多的磁盘共享读写工作,就像餐厅里有了更多的服务员,能够提供更快的服务。
RAID(Redundant Array of Independent Disks,独立磁盘冗余数组,简称磁盘阵列)是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。根据选择的版本不同,RAID比单颗硬盘有以下一个或多个方面的好处:增强数据集成度,增强容错功能,增加处理量或容量。简单来说,RAID把多个硬盘组合成为一个逻辑扇区,因此,操作系统只会把它当作一个硬盘。RAID常被用在服务器电脑上,并且常使用完全相同的硬盘作为组合。
尽管有很多人还坚持使用RAID 5,但它实际上并不是个好选择,因为它在执行奇偶校验的过程中会发生“写损失”。大多数数据库都需要大量的写入,即使用户的交易没有执行INSERT和UPDATE操作。更重要的是,如果一个磁盘发生故障,RAID 5表面上仍在正常运行,但是运行速度很慢以至于其实际上是不可用的,直到经过漫长的修复过程后才能恢复正常。
那么哪种类型的RAID是最好的呢?答案就是RAID 10。RAID 10拥有更快的I/O和故障恢复能力,它为每一个卷做了镜像,并将这些镜像集进行数据分割。
2.索引数量如何权衡?
在所有的关系数据库中,需要在数据中建立索引。索引就像黄页(电话号码簿)中的姓名和地址一样,通过姓氏就能查到美国总统Barack Obama的电话号码,通过街道地址就能查到白宫的电话号码。因此拥有更多的索引,意味着有更多的方式搜索和获取到需要的信息。
但是从另一个角度来看,每当将新的数据或记录添加到数据库中时,全部索引都需要更新一遍。如果索引数量过多,将会影响数据库的写入速度。
因此,DBA需要对索引的数量作出权衡:是选择较多索引带来的获取速度加快、写入速度减慢,还是选择较少索引带来的获取速度减慢、写入速度加快,这是一个值得思考的问题。
3.NoSQL是怎样实现速度飞跃的?
NoSQL作为大数据时代的关键技术之一,拥有大量的支持者,NoSQL数据库产品的种类也非常丰富。世界上没有免费的午餐:NoSQL相对于传统关系数据库淘汰了一个功能,即在不同的列之间JOIN数据。通过移除关系数据库的这个关键功能,NoSQL极大的简化了底层的实现。
另外,这些NoSQL数据库在“持久性(durability)”上偷工减料。什么是“持久性”呢?简单来讲就是将数据放到断电后数据不会丢失的设备中。想象你在教室里拿着笔记本或者是餐厅服务员在点餐,如果只听不写,速度肯定会很快。但是只记在脑子中,如果忘记了其中的某一部分,只能再次询问获得答案。这就是持久性的利弊,NoSQL并不总是将数据放入永久存储中的,这样做可能会提高速度,但会更容易出错,丢失数据对于DBA来说是不能掉以轻心的。