大数据量表的设计思路
Renhao 2011/4/7
大数据量表在系统中所占比例极小,但却会成为系统正常运行的性能瓶颈,根据自己对平台的业务了解,提出了个人对大数据量表的基本设计思路,对自己后续的工作也是一个说明参考。
1. 设计原则
大表的设计同系统其他设计一样,也需要遵从以下几个基本原则:
全面性:设计能够支撑与其相关的所有业务和数据承载,而非基于某一个功能点,更多需要从宏观上考虑关联业务和数据,从整体上来提高性能。若因为一个功能点的性能提升却造成了系统其他的瓶颈而使系统整体性能下降,就得不偿失了。
sql数据库迁移另一个硬盘前瞻性:设计能够适应未来的业务数据的变化,关键是满足后期数据量的扩展。
继承性:在面向未来数据量增长的同时,所有的设计和变更也尽量遵守原数据结构,维护系统的稳定性,并保证新旧数据的平稳过渡。
可维护性:部分数据存储和转移可能需要配合定时任务和人工来维护,可维护性高不仅能提高效率,更能保证数据功能正确和稳定。
2. 设计思路
平台的主要性能瓶颈主要是在大表查询这块,表写入目前还没有形成压力,以下主要阐述几种设计思路,有的只会在某种特定业务中会用到,需要通过具体业务来对表设计进行具体分析。
2.1. 垂直切分
垂直切分主要是针对数据库架构而非表的设计而言的,在这里提出来是因为它会影响到大表结构的设计。
系统的总体功能是由多个功能模块所组成,而每一个功能模块所需要的数据对应到数据库中就是一个或多个表。各个功能模块相互之间的接口越统一,越少,系统的耦合度就越低,实现数据的垂直切分就越容易。若某一个功能模块其整体数据量特别大或者因该功能并发读写特别频繁而形成瓶颈,且与系统的其他功能模块耦合度很低,则可以考虑将该功能模块整体
垂直切分,将其部署在单独的主机上,分摊整体系统的压力。
应用:与其他功能模块耦合度低且存在高并发或大数据量性能瓶颈的功能模块。
优势:拆分规则明确,可操作性强;
易于数据维护,容易定位。
难点:原来的部分表关联无法在数据库内部完成,需应用程序完                成;