云计算 频道

DTCC:dbShards基于关系的数据库拆分

  【IT168 专稿】2011年4月16日,由IT168、ITPUB、IXPUB、ChinaUnix联合主办的第二届数据库技术会议进入第二天的议程。

  在以“数据库的分布式架构”为主题的分会场7上,Code Futures公司的CEO Cory Iacson带来了主题为——“dbShards数据库拆分-数据库加速和横向扩展的新策略(Scaling your Databse)”的技术演讲。

数据库加速和横向扩展的新策略
▲图1 安久科技CEO Cory Iacson(图右),也是《多核应用架构关键技术-软件管道与SOA》一书的作者

  什么是数据库拆分?水平拆分是一个数据库设计原则,数据库的每一行都是分开保存的。每一个分区组成一个子库,这些子库还有可能被放到一个单独的数据库服务器中或者是物理位置。——维基百科

  Cory基于数据库的三个运行原理:越小越容易管理;越小速度越快;多个数据库并行查询比单个数据库查询要快得多,介绍了如何实现基于关系的数据库的拆分方式以及高可用性(Database Sharding 和High-Availibity)。

DDTC:dbShards基于关系的数据库拆分
▲(点击查看大图)关系型数据库的拆分方式:通常把用户数据拆分成比较小的单元,把相关的数据放到一块。由上图可见,客户数据拆分成三种表:主拆分表、拆分子表(用户订单表和订单项表)、全局表。

DDTC:dbShards基于关系的数据库拆分
▲数据库的拆分架构:根据前面提到的三大原则,这种数据库的拆分方式可以让每一个数据库都有自己的资源,服务器之间没有连接,并且可以进行智能并行处理,提高了CPU的利用率和生产率。中间的Driver决定查询应该定位到哪一个子库,并把它分配给相应的子库去执行。在SQL里面决定是访问哪一个数据库,这种方案是很快的,尤其是对报表和聚合查询。

DDTC:dbShards基于关系的数据库拆分
▲弹性子库实现高可用性:将一个子库划分成N个子库,扩展了子库的数量;将N个子库聚合成一个

最后,Cory展望了数据库拆分的未来,他认为数据库拆分未来应该能够支持多个数据库引擎,如SQL、NoSQL、Caching等,能够允许开发者根据既有的应用需求选择最好的引擎,同时还改善了管理功能。

 

 

 

 

 

 

0
相关文章