vlambda博客
学习文章列表

金鹰系统数据库分库分表策略

综述:
金鹰系统通过对监管企业的海量信息数据采用数据分库分表方式治理,提高了数据查询、数据处理效率。
为了全面监测区域内企业的金融风险,金鹰系统汇集了工商、舆情、投诉举报等多维度的大量数据。随着时间的推移,积攒的数据量越来越大,对系统的数据处理效率提出了更高的要求。目前金鹰系统单表最大数据量已达到亿级别,传统的数据库性能优化手段已无法满足系统的性能需求。为了减少数据库的负担,提升数据库响应速度,缩短查询时间,防控中心技术团队对数据进行分库分表。

什么是分库分表?

分库指从单个数据库拆分成多个数据库的过程,将数据散落在多个数据库中。而分表指从单张表拆分成多张表的过程,将数据散落在多张表内。

分库分表能解决什么问题?

如果数据库的查询压力过大,就需要考虑拆库,通过分库来分担单个数据库的连接压力。比如,数据库每秒需处理3500笔请求,假设单库每秒能处理的请求数最大为1000笔,那么就可以考虑拆分成4个库,来分散查询连接压力。

如果单表数据量过大,当数据量超过一定量级后,无论是对于数据查询还是数据更新,在经过索引优化等纯数据库层面的传统优化手段之后,还是可能存在性能问题。这时候就需要去换个思路来解决问题。比如:从数据生产源头、数据处理源头来解决问题,既然数据量很大,那我们就来个分而治之,化整为零。可以通过分表把数据按照一定的规则拆分成多张表,来解决单表环境下无法解决的存取性能问题。

►►►

金鹰系统数据库分库分表策略

金鹰系统目前采用ShardingSphere(一款分库分表框架)作为数据库中间件。通过对企业名称、法人等多个关键字进行组合散列运算得到企业ID。以企业ID作为分片键,ShardingSphere将根据企业ID与配置的路由信息决定该企业的数据落于哪个数据库分片、哪张表上,合理的算法使数据均匀分布在各数据库分片上,不同分片保存的数据量大致相同,从而确保数据处理效果能得到最大的优化。

本文内容为原创,转载请注明出处!

精彩导读: