高可扩展性数据库架构设计方法

高可扩展性数据库架构设计方法

ID:16647591

大小:3.76 MB

页数:23页

时间:2018-08-23

高可扩展性数据库架构设计方法_第1页
高可扩展性数据库架构设计方法_第2页
高可扩展性数据库架构设计方法_第3页
高可扩展性数据库架构设计方法_第4页
高可扩展性数据库架构设计方法_第5页
资源描述:

《高可扩展性数据库架构设计方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、高可扩展性数据库架构设计方法时宜雅迅网络股份有限公司[摘要]:软件系统的规模化运作对数据库存取性能提出了越来越苛刻的要求,本文在目前流行数据库软件自身尚不能提供包含分布式管理、存储、负载均衡的综合解决方案的条件下,研究如何从应用层面解决目前用户群体庞大的软件系统在数据库存取性能方面的瓶颈问题。本文分析了仅仅依赖数据库软件本身解决性能瓶颈问题的困难和局限性,利用分而治之的思想,在应用层引入了Sharding的概念,切实地分析解决了数据库的扩展问题。本文认为横向向外扩展方案优于垂直向上扩展,隐含“分而治之”思想的水平分割、垂直分割能有效解决数据库性能扩展问题,从而为大

2、规模用户容量、高并发访问的软件系统的建设提供了一种切实可行的性能扩展方法。[关键词]:数据库、性能扩展、Sharding、水平分割、垂直分割一、引言不管是通过终端零售,抑或是通过与实力雄厚的中间运营商进行合作,面向社会大众的个人消费类IT产品,想要形成利润,必须通过规模化运作才能完成。掌握着能够从单宗商品交易中获取高额利润的高端、重量级IT解决方案的厂商实在是为数不多。而规模化运作对IT技术提出了越来越苛刻的要求。虽然,在这个时代,已经有许多人提出了NoSQL数据库的概念,就是所谓的“去SQL化”。如Google提出的BigTable等技术。但对于许多系统而言,旧

3、式的关系型数据库软件,依然是不可或缺的重要法宝。可是,数据库不是银弹!简单地使用数据库软件,无法满足百万级、千万级用户的快速响应需求。许多声称精通数据库编程的人们,他们所能做的只是:1、在一台物理服务器上安装一个数据库软件2、按照数据库理论设计一些符合范式要求的数据表3、更进一步可能他们还会建立一些索引、存储过程、视图4、使用ADO、ADO.NET、JDBC或更高级的技术去读写这个数据库只是这些,受过正规训练的IT工作者在1~2年内应该能彻底掌握这些技术,他们可以用它来完成许多功能,但是这是最初级的层次。对于正式的商用系统的架构设计者,千百万级的用户对系统性能的要

4、求会迫使他们在数据库软件的使用方式上思考更多。一、设计理念(一)向上扩展和向外扩展在计算机的世纪里,如果谈到软件运行缓慢,性能不足,最容易联想到的方法是增加投入,提高硬件的配置,似乎性能问题便可得到解决。业内,我们把这个解决方法叫做“向上扩展”。向上扩展即扩展到更大更强、也更昂贵的服务器上。需要特别指出的是,高端服务器极其昂贵,是购置同样处理能力和内存速度的多台服务器总和的很多倍。向上扩展的成本非常高,同时它仍然无法回避下面这个问题。中国有句古语云:“人力有时而穷”。事实上,“机”力也有时而穷。按照目前的技术,无法不计成本、无止境地提高单台服务器的性能。就像Int

5、el在冲击4GHz主频后,选择了转向“多核”技术一样。一般来说,大型系统倾向于向外扩展,因为从长期来看,即便是巨型数据库,最后也会不堪重负,向外扩展将让它们得以保留通过增加服务器以提升系统能力的后路,就像多核一样。向外扩展即部署大量相对便宜的服务器来分担数据库压力。最后用一句话来总结,只要增长趋势存在,我们最后无论如何都要走上向外扩展的道路。(一)分而治之数据库的向外扩展,其本质是“分而治之”的思想。对于大型问题的求解,往往是将其分解为多个小问题,从而保证每个小问题都是更容易解决的,并且是可以同时解决的。这一点容易在传统行业中得到验证,这就像建造一座50层楼高的摩

6、天大厦,工作量自然是相当大的。如何完成这个任务,我们需要的是一支分工明确的建筑队伍,而不是一个超人。在数据库的使用上,一样的,这里的大用户容量和高并发相当于一座50层楼高的摩天大厦,每一个数据库服务器就相当于一个建筑工人,我们需要的是分工明确的数据库集群,而不是一个超级、巨型的数据库。一、数据库集群技术(一)常见数据库产品的集群技术1.SQLServer系列1)官方集群技术严格地说来,微软的SQLServer系列有个非常大的弱点,它的集群技术主要是针对高可用性的,对负载均衡没有太大的作用。用户在实际中遇到性能问题时,如果向上扩展不能解决问题,没有合适的集群方案解决

7、,就意味着要移植到其他平台上,如Oracle,采用RAC来解决。这将是一个即费财力、物力、人力,同时还要面临很大风险的一个艰难过程。但是又不得不走这条路,没有办法。SQLServerCluster相对于单点来说MicrosoftClusterServer(MSCS)是一个可以提升可用性的技术,Microsoft称之为故障转移集群。从硬件连接上看,很像Oracle的RAC,两个节点,通过网络连接,共享磁盘;事实上SQLServer数据库只运行在一个节点上,当出现故障时,另一个节点只是作为这个节点的备份:Ø因为始终只有一个节点在运行,在性能上也得不到提升,系统也就不具

8、备扩展的能

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。