欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

通用分布数据库

程序员文章站 2022-07-15 13:51:27
...

提出:

    关系数据库容量在一定容量下,可以保持一定的性能。超过容量,则性能下降。能否通过分库的方式,使得容量大了之后,每个库限制在一定容量下,保持稳定的性能?

 

方案:

   数据库划分:


    将数据库的表分为分库表和不分库表。下面假定和客户号有关的表为分库表(客户、卡、账户以及对应的流水)

    分库表,建立 函数  分库号=f(客户),这个客户、分区对照放在redis里。

     每个分库建立一个数据库,所有不分库表建在一个数据库里,再建一个数据库(中心库)用于跨库操作。

 

操作


  • 特定客户操作:

    根据客户号,定位分库,将用户会话和分库号绑定,后面操作始终在这个分库上进行。比如根据卡号、账户查询,始终在这个分库进行。

 

  • 不定客户操作:

    比如报表、查询等,不定客户,无法局限在一个分库上。需要根据sql99标准,对sql进行适配,主要涉及到行的操作进行重新组合,也就是要重写sql的执行。下面举例说明:

select * from flow where trade_date='20200202' order by trade_date desc;

在每个分库上执行这个sql,再将结果导入中心库的临时表,执行order by trade_date desc,完毕。

    适配

    jdbc适配。开发jdbc驱动,负责sql和存储过程执行。