作者:禅与计算机程序设计艺术
1.简介
一、概述
数据库分库分表是提高系统处理能力、优化数据处理效率、便于横向扩展的一种有效方式,也是对数据库设计者提出的一种新型解决方案。通过分片技术将一个物理数据库切割成多个逻辑的子数据库或表空间,每个子数据库或表空间之间互不干扰地存储数据,并通过分片键进行数据水平拆分,将数据分布到不同的数据库服务器上,从而达到支撑海量数据的需求。由于采用了分片技术,数据库能够更好地利用服务器资源、避免单个服务器性能瓶颈、降低成本,进而提升整个系统的处理能力和并发能力。
但是,在实际应用中,因为各个子数据库之间的相互独立性,导致很多时候需要跨子数据库进行复杂的查询操作。因此,分库分表还涉及到了分区技术。
二、背景介绍
当今互联网时代的需求已经使得单一的数据库无法满足业务快速发展的要求,出现了很多的分布式数据库产品,如MySQL Cluster集群、Tair、CouchBase等。这些分布式数据库都是采用主从复制的方式,能够解决单点故障的问题,并且通过水平扩展可以解决负载均衡的问题。这些产品虽然可以提供可靠的数据存储功能,但是却带来了另一个难题——如何进行数据分片和分区,以便支持业务的快速发展。
通常情况下,分布式数据库都会采用垂直切分和水平切分的方式,即按照功能模块进行垂直切分和按照业务量或者访问模式进行水平切分。其中,垂直切分是指根据业务类型,将同一个数据库部署在不同的机器上,比如,可以把订单相关的数据放在一起,用户信息放在一起;水平切分是指根据业务量或者访问模式,将同一个数据库的不同表或索引数据划分到不同的数据库服务器上,从而实现分布式存储和并行查询。
<