分库解决方案—实际操作

目录

  • 流程图
  • 数据库设计
  • 测试数据说明
  • 问题以及难点

一、流程图

说明:

  1、 信息数据汇总后,有处理程序处理,根据算法,分发到算法指定的数据库服务器上的索引库,直到存到对应索引库下面的数据存储表。

  2、每个地域也就是国家,下面可以有多台数据服务器,但是此地域(国家)下面的索引库不能重复。因为这样方便后续数据查询。

  3、当有数据到达索引库后,需要存储数据的情况下。默认情况下,索引库下没有存储表。此时程序会创建第一个存储表。当数据达到我们规定此存            储表的存储上限时,就会创建第二个存储表,后续的数据,就会存到第二个存储表中。以此类推。

二、数据库设计

  1、数据库服务器配置表:DBServer                

             [ID] : 主键

           [DBTypeID]:数据库类型ID(例如:国内1=D1、国内2=D2、国外1=H1)

           [ServerIP]  :数据库服务器IP

             [UID] :用户名

           [Pwd]:密码

           [Remark]:备注说明

           [MaxDataDBCount] :最多可以创建多少个数据存储表

           [Sequence]:排序

   问题:

      为什么要有 [MaxDataDBCount] 字段? —— 限制数据存储表的创建,因为每台服务器的性能不一样。要求也不一样。

      为什么要有 [Sequence]字段? —— 调整数据库先后顺序,方便数据插入

      [DBTypeID]与[ServerIP]的关系 —— 这里的数据库类型我们可以比作是区域,一个区域可以分布多台数据库。

   2、索引数据库配置表:IndexServerConfig

              [ID]:主键

              [DBTypeID]:数据库类型ID(例如:国内1=D1、国内2=D2、国外1=H1)

              [IndexDBNo]:索引库编号

              [ServerID]:当前索引库所在的数据库服务器ID

              [HashValues]:数据根据算法生成的HashValues(0~255)

              [CurrentDataDBNo]:当前索引库对应的数据存储表编号

              [MaxDataCount]:对应的当前数据存储表的最大数据存储量

    说明:

      1、[HashValues]:就是我们根据数据特性和定义的相关算法生成的对应的值,此处的[HashValues]是这些值得集合。

      2、 [IndexDBNo]与 [HashValues]的对应关系

        例如:

            IndexDBNo     HashValues

              1               0,1,2,3,4,5,6,7

               2      11,12,13

               5      221,222,223,224,225 

       3、如上流程图所示,每个地域国家[DBTypeID]可以对应多台数据库服务器,但是地域下面的索引 [IndexDBNo]与【HashValues】一一对应不能重复。

   3、存储信息数据库配置:DataServerConfig

              [ID]:主键

                [DBTypeID]:数据库类型ID(例如:国内1=D1、国内2=D2、国外1=H1) 

              [DataDBNo]:数据存储表编号

              [IndexDBNo]:索引库编号

              [ServerID]:服务器编号

              [MaxDataCount]:当前数据存储表自定义的最大存储量

三、测试流程

数据库服务器配置表:DBServer

索引数据库配置表:IndexServerConfig

存储信息数据库配置:DataServerConfig

一条信息数据过来后,通过算法转换成HashValue=2,此信息是国家地域编号 DBTypeID=1的数据。

根据 HashValue=2 和  DBTypeID=1 ,我们到 索引数据库配置表:IndexServerConfig中找到相关索引数据

我们看到上图中的第一条数据符合我们的标准,它所对应的数据库服务器编号IndexDBNo=1,ServerID=11

这样我们就可以根据 DBTypeID=1   和  ServerID=11 和 IndexDBNo=1。找到具体什么地域下的哪台数据库中的索引库下的数据存储表。

总结:

数据存储

数据查询:

四、问题难点——后续补充

时间: 2024-11-05 20:29:11

分库解决方案—实际操作的相关文章

MyBatis实现Mysql数据库分库分表操作和总结

阅读目录 前言 MyBatis实现分表最简单步骤 分离的方式 分离的策略 分离的问题 分离的原则 实现分离的方式 总结 前言 作为一个数据库,作为数据库中的一张表,随着用户的增多随着时间的推移,总有一天,数据量会大到一个难以处理的地步.这时仅仅一张表的数据就已经超过了千万,无论是查询还是修改,对于它的操作都会很耗时,这时就需要进行数据库切分的操作了. MyBatis实现分表最简单步骤 既然文章的标题都这么写了,不如直接上干货来的比较实际,我们就先来看看如何实现最简单的分表. 1.我们模拟用户表数

数据库分库解决方案

当业务数据量非常大,单数据库无法支撑的时候,有可能是单库已经写满了,也可能数据库读写比较频繁,已经触碰到单库的io瓶颈了,这时就需要考虑分库. 下面聊一下该怎么分库,如何优化: 刚开始只有数据库A, 后来又加了数据库B. 假如数据表都是有时间戳字段,而且数据查询条件都带一个时间戳字段,这样我们可以根据数据创建的时间范围来分库,比如给数据库按年份命名db_2019, 到2020年新生成一个库db_2020, 在业务端进行数据读写操作时,先根据时间戳条件获取到年份,然后选择相应年份的数据库进行操作.

分库解决方案

一.目录 需求 问题 解决方案 二.需求 现在有接近Z台分布式数据库服务器,M台汇总数据库.当前需要将Z台数据库中的每个数据库中的关键性数据同步到汇总数据库上.汇总数据库上的数据要求:实时,准确.   三.问题: 当前的数据库架构或者设计在后期就会出现它的疲态.比如,当前有一亿条数据,这些数据分为A类,B类,C类等等.同时,A类数据在Z1数据库上,B类在Z2数据库上,C类在Z3数据库上.这些数据都会有一个唯一的Key. 这样每个类别的数据库分别建立同步机制.当前选择的同步机制是MSSQL发布订阅

分库分表带来的完整性和一致性问题

如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 在最近做的一个项目中,由于每天核算的数据量过于庞大,需要把数据库进行分库保存.当数据分散到各个库之后,带来的数据更新操作就会存在一个一致性和完整性的问题.下面是一个典型的场景 假设目前存在三个物理库,现在有一个文件,里面有1W条数据,根据分库的规则,可以把文件里面的数据分到三个库中,现在需要保证这1W条数据要要完整的保存到这三个库里面,并且数据是一致性的,也就是说 三个库里面已导入的数据完全

【转】MySQL分库分表环境下全局ID生成方案

转载一篇博客,里面有很多的知识和思想值得我们去思考. —————————————————————————————————————————————————————————————————————— 在大型互联网应用中,随着用户数的增加,为了提高应用的性能,我们经常需要对数据库进行分库分表操作.在单表时代,我们可以完全依赖于数据库的自增ID来唯一标识一个用户或数据对象.但是当我们对数据库进行了分库分表后,就不能依赖于每个表的自增ID来全局唯一标识这些数据了.因此,我们需要提供一个全局唯一的ID号生成

数据库架构演变及分库分表

当生产环境中业务量激增,数据库数据量也会极具增加.当数据库的数据量达到一定程度时(数据库瓶颈),数据库宿主机负载超高,会严重影响业务,严重时会导致数据库宕机.为了避免这种极端情况的发生,我们应当在发生前做好预案,用于解决数据库数据量过载的问题.以下是我个人工作中使用的解决方案:1)数据库主从或多主多从方案2)数据库冷热数据拆分3)数据库分库分表操作4)在数据库前端增加缓存redis或memcached 一开始时,公司部分业务的架构如下(全都是单节点情况)经过自己强调该架构严重的缺点:节点单一,服

Ubuntu 14.04 亮度BUG解决方案

不少Ubuntu 13.10用户遇到了屏幕亮度设置异常问题,无法调节亮度级别,尤其使用英特尔的平台.同样该系统BUG在最新开发的Ubuntu 14.04 (Trusty Tahr)中也继续存在,官方也没有及时修复该问题. 如果你现有的平台基于英特尔,使用了英特尔芯片组,在Ubuntu 13.10/Ubuntu 14.04系统下,无法更改屏幕亮度级别. 具体问题如下,打开系统设置,进入“亮度&锁屏”选项,调节亮度级别都无法正常生效. 除了影响英特尔平台外,不少使用英伟达显卡设备的用户也会遇到该系统

MyCAT+MySQL 搭建高可用企业级数据库集群——第4章 MyCat进阶实战至垂直分库

4-1 为什么要进行垂直分库和相关操作 4-2 收集分析业务模块 4-3 MySQL复制的步骤 4-4 MySQL复制环境说明 4-5 MySQL复制实战 4-6 MySQL复制总结 4-7 垂直切分 4-8 垂直切分相关配置 4-9 垂直切分schema文件配置 4-10 垂直切分server文件配置 4-11 后续工作 4-12 Mycat启动调试 4-13 Mycat验证配置 4-14 清理多余数据 4-15 跨分片查询 4-16 配置和验证全局表 4-17 垂直切分的优缺点 4-1 为什

【Visual Studio】解决方案未保存,请先保存你的解决方案,然后再管理Nuget包

公司接受的外包项目,文件夹中没有.sln文件,用VS打开.csproj文件来打开方案.此时可能因为一些引用问题想打开Nuget包管理器,会弹出如下提示: 解决方案未保存,请先保存你的解决方案,然后再管理Nuget包 此时只需保存项目,就可看到即将保存的文件是.sln后缀的文件.保存后打开该.sln文件来打开方案(而不是之前通过.csproj文件来打开),就能在该方案打开Nuget包管理器了. .csproj是一个项目工程文件,.sln是一个解决方案文件.一个解决方案中可以包含多个项目工程(通常此