一种海量数据基于字段进行动态分库的方法及其系统与流程

文档序号:36324635发布日期:2023-12-09 09:49阅读:32来源:国知局
一种海量数据基于字段进行动态分库的方法及其系统与流程

本发明涉及计算机通讯,特别是一种海量数据基于字段进行动态分库的方法及其系统。


背景技术:

1、在当前的技术背景下,数据库分库分表是常见的解决方案以应对大规模数据存储和查询的挑战。然而,这种方案也存在一些痛点和缺点,例如当需要新增或移除数据库分片时,会涉及到数据的迁移操作,这可能导致系统的停机时间或者数据一致性问题。又例如配置管理和维护成本高,随着数据库分片数量的增加,配置管理和维护成本也会相应增加。又例如当需要排查某个用户编号的问题时,无法直观的辨认出用户所处的分库,必须通过程序进行具体规则的运算才可得知用户所处的分库,进而才能排查问题。


技术实现思路

1、为了解决上述技术问题,本发明提供一种海量数据基于字段进行动态分库的方法及其系统,能够高效地管理和访问大规模数据,并简化了数据库分库分表的维护和配置管理过程。

2、本发明采用以下技术方案实现:

3、一种海量数据基于字段进行动态分库的方法,所述方法包括以下步骤:

4、步骤s1、准备n个数据库,以n为键,数据库链接串为值,并将数据库链接串的信息存储在配置中心;

5、步骤s2、当新增用户时,从redis缓存中读取全局唯一递增的用户编号id并得到分库编号i,然后将分库编号i转换成m位数的字符串,所述m为分库数量值的位数,将字符串拼接到该用户编号id后面,形成新的用户编号id,然后将新增用户插入到相应的数据库中;

6、步骤s3、当需要读取用户信息时,根据用户的新的用户编号id获取分库编号i,然后从配置中心读取分库编号i的数据库链接串con,并从该分库中读取用户数据;

7、步骤s4、当n个数据库中分库编号为i的数据库迁移至新的数据库时,设置新的数据库链接串为conx,配置中心将分库编号为i的数据库对应的数据库链接串con更新为conx,并记录原数据库链接串为con,并给此分库编号i标识上迁移标识,再将最新的数据库链接串信息推送给程序;

8、步骤s5、当需要读取用户信息时,根据用户的新的用户编号id获取迁移后的分库编号ix,然后从配置中心读取分库编号ix的数据库链接串conx,并从该分库中读取用户数据;

9、步骤s6、如果分库编号为ix的数据库出现不稳定或其他异常情况,则及时修改配置中心中的分库编号为ix的数据库链接串信息;将该分库的数据库链接串conx改为数据库链接串con,并移除迁移标识;

10、如果分库编号为ix的数据库情况正常,则直接移除迁移标识,使得新的数据库完全替代原来的数据库开始工作。

11、优选的,所述步骤s2进一步具体为:当新增用户时,通过get lastid命令从redis缓存中读取最近一次生成的用户编号id,然后将用户编号id的数值加1,然后将得到的用户编号id与n进行取模运算,从而得到分库编号i。

12、优选的,所述步骤s2进一步具体为:形成新的用户编号id后,从配置中心读取分库编号i对应的数据库链接串con,然后将新增用户插入到相应的分库中。

13、优选的,所述步骤s3进一步具体为:当需要读取用户信息时,将用户的新的用户编号id的后m位截取即为步骤s2中的字符串,根据字符串获取对应的分库编号i。

14、优选的,所述步骤s5进一步具体为:当需要读取用户信息时,将用户的新的用户编号id的后m位截取即为步骤s2中的字符串,根据字符串获取对应的分库编号ix。

15、优选的,所述步骤s5进一步具体为:当有新增用户注册时,通过get lastid命令从redis缓存中读取最近一次生成的用户编号id,然后将用户编号id的数值加1,然后将得到的用户编号id与n进行取模运算,从而得到分库编号ix;

16、然后将分库编号ix拼接到该用户编号id后面,形成新的用户编号id,然后从配置中心获取编号为ix的分库的迁移标识,然后得到新的数据库链接串conx和数据库链接串con,然后将用户数据同时写入这两个数据库中。

17、一种海量数据基于字段进行动态分库的系统,所述系统包括准备模块、新增模块、读取模块a、迁移模块、读取模块b以及修改模块;

18、准备模块、准备n个数据库,以n为键,数据库链接串为值,并将数据库链接串的信息存储在配置中心;

19、新增模块、当新增用户时,从redis缓存中读取全局唯一递增的用户编号id并得到分库编号i,然后将分库编号i转换成m位数的字符串,所述m为分库数量值的位数,将字符串拼接到该用户编号id后面,形成新的用户编号id,然后将新增用户插入到相应的数据库中;

20、读取模块a、当需要读取用户信息时,根据用户的新的用户编号id获取分库编号i,然后从配置中心读取分库编号i的数据库链接串con,并从该分库中读取用户数据;

21、迁移模块、当n个数据库中分库编号为i的数据库迁移至新的数据库时,设置新的数据库链接串为conx,配置中心将分库编号为i的数据库对应的数据库链接串con更新为conx,并记录原数据库链接串为con,并给此分库编号i标识上迁移标识,再将最新的数据库链接串信息推送给程序;

22、读取模块b、当需要读取用户信息时,根据用户的新的用户编号id获取迁移后的分库编号ix,然后从配置中心读取分库编号ix的数据库链接串conx,并从该分库中读取用户数据;

23、修改模块、如果分库编号为ix的数据库出现不稳定或其他异常情况,则及时修改配置中心中的分库编号为ix的数据库链接串信息;将该分库的数据库链接串conx改为数据库链接串con,并移除迁移标识;

24、如果分库编号为ix的数据库情况正常,则直接移除迁移标识,使得新的数据库完全替代原来的数据库开始工作。

25、优选的,当新增用户时,通过get lastid命令从redis缓存中读取最近一次生成的用户编号id,然后将用户编号id的数值加1,然后将得到的用户编号id与n进行取模运算,从而得到分库编号i。

26、优选的,所述新增模块进一步具体为:形成新的用户编号id后,从配置中心读取分库编号i对应的数据库链接串con,然后将新增用户插入到相应的分库中。

27、优选的,所述读取模块a进一步具体为:当需要读取用户信息时,将用户的新的用户编号id的后m位截取即为新增模块中的字符串,根据字符串获取对应的分库编号i。

28、优选的,所述读取模块b进一步具体为:当需要读取用户信息时,将用户的新的用户编号id的后m位截取即为新增模块中的字符串,根据字符串获取对应的分库编号ix。

29、优选的,所述读取模块b进一步具体为:当有新增用户注册时,通过get lastid命令从redis缓存中读取最近一次生成的用户编号id,然后将用户编号id的数值加1,然后将得到的用户编号id与n进行取模运算,从而得到分库编号ix;

30、然后将分库编号ix拼接到该用户编号id后面,形成新的用户编号id,然后从配置中心获取编号为ix的分库的迁移标识,然后得到新的数据库链接串conx和数据库链接串con,然后将用户数据同时写入这两个数据库中。

31、本发明的有益效果:

32、本发明提供一种海量数据基于字段进行动态分库的方法及其系统,能够高效地管理和访问大规模数据,并简化了数据库分库分表的维护和配置管理过程。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1