之前说起 将参加 2010 数据库技术大会,今天将这次参会使用的 PPT 贴出来,或许会对大家有点用。
先大概介绍下大会的几本情况吧,满满2天的大会,共安排了 29 场演讲,内容涵盖了 Oracle,MySQL,DB2,SQL Server ,Sybase,达梦(国产数据库) 等多种数据库,演讲数量之多,主题内容之丰富,实数罕见,哈哈。演讲嘉宾的阵容也非常庞大,国内14个 ACE / ACE Director,其中9位到场演讲。
各个主题内容的 PPT 可以到 此处下载 ,这里我大概介绍下“高可用可扩展数据库架构” 这个话题吧:
在主题中,我从数据库的 高可用 和 可扩展 两个方面来进行了分享探讨:
高可用

软/硬件高可用(热/冷备)
数据高可用(共享,同/异步复制)

单独的硬件高可用除了冗余之外本身没有太多可以讲的,所以一笔带过。
基于共享设备的数据高可用只是大概的介绍了可能的方案,由于各方案的实施都比较昂贵,更适合于Oracle,DB2等,所以也没有深入探讨。
所以,这部分重点介绍了一下利用 MySQL 的 Replication 技术和应用程序的共同配合来实现 Share Nothing 方式的高可用。
可扩展

向上扩展(Scale Up)

硬件扩容(增加CPU数量,增加内存容量,增加磁盘数量…)
硬件升级(更换更高端的主机,更换更高端的存储设备,更换更高端CPU,更换转速更快的磁盘…)

向外扩展(Scale Out)

数据拷贝分发(一处写入多处读取,读写分离…)
数据垂直/水平切分(功能模块切分(vertical sharding),水平分片切分(horizontal sharding),两者综合)
Cache 和 Search(应用程序更新Cache,数据库更新 Cache,利用Search全文搜索…)

对于扩展性,Scale Up基本上就是各个厂商自身单台设备扩容能力的比拼,我们没有太多能力干预,所以我也只是简单分析了一下。
而对于 Scale Out,我想肯定是大家最关心的问题了。而Scale Out 中的 Sharding ,我想大家肯定也不是第一次听到,毕竟不是什么新东西了。
我这里重点介绍的是Sharding过程中如何选择合适的Sharding方法,如何解决Sharding之后的数据合并问题(其实没有解决,囧…),以及如何利用数据库外部资源(Cache,Search)来解决数据层的扩展性问题。
其实架构这个东西本身就是 仁者见仁智者见智,没有万能的架构,也没有长久适用的架构。架构和业务场景息息相关密不可分,离开了实际业务场景谈架构,可以说就是纸上谈兵,那如果离开了架构仅仅追求快速的业务实现呢?呵呵,出来混,迟早要还的。
注:我本身不是什么架构师,占用大家那么多宝贵时间听我扯淡架构,挺感动的…
高可用可扩展数据库架构方案探讨
View more presentations from Sky Jian.

, , , ,

在 IT 行业很多工程师(尤其是很多 DBA)的心目中,都把小型机视为解决性能问题的终极武器,认为小型机的处理能力要远大于 PC Server。在几年前,可能也确实是这样。但随着近几年 X86 架构芯片技术的飞速发展,PC Server 的处理能力已经越来越强悍,不断的给我们带来惊喜。
最近几年的小型机市场,基本上被 IBM 吃掉了大部分。虽然可能并不完全是因为其 Power 芯片处理能力与其他厂商的芯片相比有优势,但其处理能力方面的优异表现确实是一个很重要的因素。所以最近几年我们一直关注着 IBM 小型机与其他主机的处理能力比较,当然比较是基于 Oracle 数据库所做的一些测试。
测试基本模型如下:

在待测主机上安装好 Oracle 数据库,配置足够装载下所有数据的 SGA,将 Oracle 的 Redo 日志放在内存文件系统上。然后在我们技术能力范围内对 Oracle 进行相应的调优。
使用我们真实的线上数据抽样(约10GB),Import 进入待测试主机上的 Oracle 数据库中。
通过 PL/SQL 编写出模拟我们在线业务中最为典型的事务逻辑,然后使用C++编写多线程程序作为压力测试客户端。
通过多台主机运行压力测试程序,平缓的给待测主机增加压力,待测主机的 CPU 利用率基本用完为止。

测试数据的收集主要通过恒定时间段的 Oracle 数据库自身性能数据采样(statspack),然后分析 statspak 中的每秒事务数。以往经验显示,基本上当客户端压力线程到达一定数量之后,处理量就比较稳定甚至下降。然后我们从中取出每秒事务数的最大值,做为该机器的处理能力分值。
这个测试模型主要消耗的资源是主机的 CPU + RAM 的能力,而且当初也得到了 IBM 实验室的人认可。
通过这几年对几种主机处理能力跟踪测试情况来看,IBM Power 芯片的优势已经越来越不明显了,甚至其 Power 5+ 芯片的处理能力已经不如某些型号的 Intel x86 芯片的处理能力了,部分主机处理能力对比数据如下:
近四五年来的测试数据:
Sun v880(4C):                             [...]

, , , , ,

说实话,在读 Peter Morville 与 Louis Rosenfeld 合著的这本 《Web 信息架构 – 设计大型网站》 之前,我甚至都不知道还专门有 “Web信息架构师” 这一类职业,只不过一直以为这只是某些产品经理们所需要兼顾考虑的事情。自从看了此书之后,方才知道,原来还有这样一个职业(或者说是职位)。
全书从信息架构的原理,到流程方法,再到实践以及相关的案例分析,对 Web 信息架构所涉及到的各方面内容描述的清晰透彻,连我这个对“信息架构”完全属于门外汉的人都轻松理解了,可见内容还是非常易懂的,哈哈。
书中有一个观点尤其让我引起共鸣,那就是在现在这样爆炸式的信息时代,我们已经不能仅仅通过传统的网站可用性(如网站能够访问,用户能够正常操作)来衡量一个网站的可用性,还需要将易用性也归纳入可用性范畴。虽然我的第一职业就是做运维,尽可能保障传统可用性,但也非常认可这样的观点。
像现在这样一个信息高速时代,人们在获取信息的时候,更希望能够在最短的时间内以最简单的方式获取自己需要的内容。 而如今的互联网时代,几乎每一种应用都基本上可以找到替代者,而且呈越来越多的趋势。如果我们所提供的海量信息不能够以一个非常合理的组织结构来呈现,就很可能给用户在使用过程中带来烦恼,进而离开换用其他更为易用的替代品。除非你是一个完全的垄断者,才会迫使用户不得不继续适应你,可在变换如此之快的互联网行业,谁能保证自己永远是一个垄断者?更何况存在垄断者的行业本身就是一个不正常的行业。
所以,千万不要忽视网站的易用性,其实这不仅仅是为了用户考虑,其最终受益者还是自己。而网站是否易用,其实最基本的一点就是要让用户清楚的了解自己每一步操作之后将会给自己带来什么结果,清楚的了解自己完成一件事情需要哪几步操作。这往小里说在某些场景下被称之为前端易用性设计,可往大里说,这就是信息架构。现在讨论非常热的 “以用户为中心设计” 其实也正是信息架构的一部分。
此书翻译也还算可以,强烈建议各产品经理,尤其是产品经理的经理们好好看看这本书。
附注:
卓越购买此书 请 点这里
当当购买此书 请 点这里

, ,