在前面的文章里小编给大家介绍了很多关于数据库相关的知识,接下来的文章里小编继续介绍数据库的面试题,先来看看为什么要拆分数据库?
为什么要拆分数据库?
单个项目成立之初,数据库负载和数据量都不大,不需要分割数据库,小财务系统、文件系统、ERP系统、OA系统、MySQL数据库实例就足够了。
分割数据库很讲究,比如分割方法有两种:垂直分割和水平分割。那么你是先水平分割还是垂直分割呢?顺序没关系吗?不,顺序有所谓,顺序绝对不能错:先水平分割,再垂直分割。
垂直切割是什么?
垂直分割是根据业务分割数据库,将类似业务的数据表分割成独立的数据库,另一种数据表分割成其他数据库。
例如,在新零售的电子商务数据库中,我们可以将与商品相关的数据表分成一个数据库,然后在这些数据表的基础上建立商品系统。例如,使用JAVA或PHP语言创建商业街系统。然后,将跟进销售相关的数据表分成另一个数据库,用程序构建仓库系统。
垂直分割解决了哪些问题?
垂直分割可以减少单节点数据库的负载。原来所有的数据表都放在一个数据库节点上,毫无疑问所有的读写请求都发送到这个MySQL上,所以数据库的负载太高。如果将一个节点的数据库分割成多个MySQL数据库,可以有效降低每个MySQL数据库的负载。
垂直分割不能解决任何问题。
垂直分割不能解决的是缩小表。例如,无论商品表分为哪个数据库节点,商品表的记录都很多,无论数据库的垂直分割有多细致,每个数据表的数据量都没有变化。
MySQL单表记录超过2000万,读写性能迅速下降,垂直分割无法缩小手表。
水平分割是什么?
水平分割是根据某个字段的某个规则,将数据分割成多个数据表。一个数据表为零,分成多个数据表,可以缩小表。
很多人误解了水平分割,认为水平分割的数据表必须保存在不同的MySQL节点。实际上,水平分割的数据表也可以保存在MySQL节点中。水平分割不一定需要多个MySQL节点。你为什么这么说?
很多人不知道MySQL有自己的数据分区技术,可以根据特殊规则将一个表的数据分区存储在不同的目录下。如果在Linux主机上挂载多个硬盘,可以使用MySQL分区技术将一个表的数据分区存储在多个硬盘上。这样,原始硬盘的有限IO能力就升级到多个磁盘来增强IO。
水平分割的应用。
水平分割可以将数据分割成多个数据表,可以缩小表格。
但是,并非所有的数据表都是水平分割的。在电子商务系统中,用户表、商品表、产品表、地址表、订单表等都需要对大量的数据表进行分割。有些数据表不需要分割,因为数据量不大,如品牌表、供应商表、仓库表等,这些都不需要分割。
水平分割的缺点。
各数据表的分割规则不一致,应根据实际业务确定。因此,在选择数据库中间件产品时,应选择分割规则丰富的产品。常见的数据库中间件包括:MyCat、Atlas、ProxySQL等。有人认为MyCat是Java语言开发的,怀疑MyCat的运行效率。其实数据库中间件的作用相当于SQL句子的路由器。你的路由器硬件配置不是很高,但不影响你享受100兆宽带。MyCat也是一个道理。它只起到SQL句子转发的作用,不会实际执行SQL句子。我建议使用MyCat的主要原因是数据分割规则很多。我们可以根据主键求模分割数据,可以根据主键范围分割数据,也可以根据日期分割数据等等。所以MyCat是目前非常好的中间产品。
水平分割的另一个缺点是扩展比较麻烦。随着时间的推移,分割迟早会有不足。这时候不是先选择增加新的集群分片。因为MySQL分片需要4~8个MySQL节点(最小规模),所以增加分片的投入成本非常高。所以正确的做法是冷热分离分片中的数据,定期存档。将过期的业务数据从分片转移到归档库。目前数据压缩比最高的MySQL引擎是TokuDB,写东西的速度是InnoDB引擎的6-14倍。最好用TokuDB作为归档数据库。
为何先水平分割,再垂直分割?
当数据量增加时,首先要做的是分割数据,使用多个硬盘来增加数据的IO能力和存储空间,这样成本最低。几个硬盘的钱可以获得良好的IO性能。
进入下一阶段,数据量继续增加。此时,将数据分成多个MySQL节点,并使用MyCat管理数据分割。当然,数据的读写分离等。这里就不讨论了。在后台进行水平分割的同时,业务系统还可以引入负载平衡和分布架构。理论上,冷热数据分离后,水平分割可以持续很长时间,数据量再大也不怕,定期归档就好。
数据库到了水平分割阶段,数据量的增加不再是改变结构设计的主要原因。相反,在这个阶段,业务系统是无法承受的。如果系统不拆分模块,业务系统就无法支持,所以根据模块和业务,一个系统分割成几个子系统。几个子系统之间的数据相对独立。比如淘宝不会和支付宝分享所有数据,分享同一个数据表也会影响自己业务的发展。所以要垂直分割,把数据表分类,分成几个数据库系统。
说到这里,仔细想想。如果数据库过早垂直分割,必须重建几个独立的业务系统,工作量太大,水平分割不需要业务系统的大修改,因此要从水平分割开始,好了,到这里就介绍完了,希望对大家有帮助。
>>>>>>点击进入软考报名专题
¥699.00
¥399.00
¥299.00
¥399.00