精华内容
下载资源
问答
  • 数据库数据不均衡
    千次阅读
    2019-07-25 20:02:51

           在进行机器学习,深度学习任务时,经常会碰到数据不均衡的问题。如果数据严重失衡甚至会导致训练后的模型对任何样本对判别为训练数据中占比较多的一类。以下总结了再做图像任务时,处理数据不均衡问题常用的几种方法。下面分别从数据层面和优化算法层面考虑分别介绍。

    一、数据层面

    1、欠采样

          对不均衡数据中样本较多的一类进行采样,使其约等于样本量较少的一类。但是,由于图像任务模型一般参数众多,要求更多的训练数据量。欠采样为了保证数据均衡,舍弃了部分数据。一般来说,不采用这种方式。

    2、过采样

    对不均衡数据中样本减少的一类重复采样。常使用以下方法:

    1)直接复制

    相同的数据直接复制几份达到扩充数据的目的,但可能会导致过拟合,一般少用这种方式。

    2)数据增强

    数据增强一般有两种方式:静态数据增强和实时数据增强(动态数据增强)。静态数据增强就是对数据增强后直接加入训练集。实时数据增强是在训练过程中对每个batch的数据进行数据增强(数据随机性更大,更不易发生过拟合)。一般常使用实时数据增强的方式。在训练的过程中进行数据增强。

    常使用以下三种变换进行数据增强:颜色变换、空间变换、噪声变换。

    颜色变换:

    • 随机调整亮度
    • 对比度
    • 颜色
    • 饱和度

    空间变换:

    • 水平翻转
    • 上下翻转
    • 转置
    • 小角度旋转
    • 仿射变换  

    噪声变换:

    • Gaussion噪声
    • Poisson噪声
    • Mask噪声
    • 椒盐噪声
    • 彩虹噪声

    虽然tensorflow和Keras对集成了一些数据增强的方法。但还是推荐一个好用的数据增强的python包imgaug。以上说的图像数据增强的方法包里均有而且调用方便。功能很强大。具体使用方法网上很多。

    3、GAN对抗生成网络

    可以使用对抗生成网络生成虚假数据。来扩充数据集。

    二、算法层面

    可以使用一些优化技巧让模型更加关注占比较少类的样本。从而使模型能专注学习此类的特征,而不是过多的关注样本数量较多的类别。例如使用focal loss。也有其他更多的解决类别不均衡的loss函数。

     

    其他的方法后续继续补充。

     

     

    更多相关内容
  • 将LVS与数据库集群结合,提出一种对LVS架构下数据库集群性能进行测试的方案,并利用HP LoadRunner对负载均衡算法的数据库集群进行负载测试实验,通过数据分析比较,得出LVS提供的算法中较适合数据库集群的调度算法。
  • Oracle RAC数据库连接负载均衡配置研究.pdf
  • 数据库的负载均衡

    千次阅读 2018-09-30 10:58:35
    实现数据库的负载均衡技术,首先要有一个可以控制连接数据库的控制端。在这里,它截断了 数据库和程序的直接连接,由所有的程序来访问这个中间层,然后再由中间层来访问数据库。这样, 我们就...

    负载均衡集群是由一组相互独立的计算机系统构成,通过常规网络或专用网络进行连接,由路 由器衔接在一起,各节点相互协作、共同负载、均衡压力,对客户端来说,整个群集可以视为一台 具有超高性能的独立服务器。

    1、 实现原理

    实现数据库的负载均衡技术,首先要有一个可以控制连接数据库的控制端。在这里,它截断了 数据库和程序的直接连接,由所有的程序来访问这个中间层,然后再由中间层来访问数据库。这样, 我们就可以具体控制访问某个数据库了,然后还可以根据数据库的当前负载采取有效的均衡策略, 来调整每次连接到哪个数据库。

    2、 实现多据库数据同步

    对于负载均衡,最重要的就是所有服务器的数据都是实时同步的。这是一个集群所必需的,因 为,如果数不据实时、不同步,那么用户从一台服务器读出的数据,就有别于从另一台服务器读出 的数据,这是不能允许的。所以必须实现数据库的数据同步。这样,在查询的时候就可以有多个资 源,实现均衡。比较常用的方法是 Moebius for SQL Server 集群,Moebius for SQL Server 集群 采用将核心程序驻留在每个机器的数据库中的办法,这个核心程序称为 Moebius for SQL Server 中间件,主要作用是监测数据库内数据的变化并将变化的数据同步到其他数据库中。数据同步完成 后客户端才会得到响应,同步过程是并发完成的,所以同步到多个数据库和同步到一个数据库的时 间基本相等;另外同步的过程是在事务的环境下完成的,保证了多份数据在任何时刻数据的一致性。 正因为 Moebius 中间件宿主在数据库中的创新,让中间件不但能知道数据的变化,而且知道引起 数据变化的 SQL 语句,根据 SQL 语句的类型智能的采取不同的数据同步的策略以保证数据同步成 本的最小化。数据条数很少,数据内容也不大,则直接同步数据。

    数据条数很少,但是里面包含大数据类型, 比如文本,二进制数据等,则先对数据进行压缩然后再同步,从而减少网络带宽的占用和传输所用 的时间。

    数据条数很多,此时中间件会拿到造成数据变化的 SQL 语句, 然后对 SQL 语句进行解析,分 析其执行计划和执行成本,并选择是同步数据还是同步 SQL 语句到其他的数据库中。此种情况应用 在对表结构进行调整或者批量更改数据的时候非常有用

    3、 优缺点

    优点:

    1) 扩展性强:当系统要更高数据库处理速度时,只要简单地增加数据库服务器就 可以得到扩展。

    2) 可维护性:当某节点发生故障时,系统会自动检测故障并转移故障节点的应用,保证数据库的持 续工作

    3) 安全性:因为数据会同步的多台服务器上,可以实现数据集的冗余,通过多份数据来保证安全性。 另外它成功地将数据库放到了内网之中,更好地保护了数据库的安全性。

    4) 易用性:对应用来说完全透明,集群暴露出来的就是一个 IP

    缺点:

    a) 不能够按照 Web 服务器的处理能力分配负载。

    b) 负载均衡器(控制端)故障,会导致整个数据库系统瘫痪。

     

     

    展开全文
  • 定性、数据可靠性等要求越来越高,单台服务器力不从心 三、解决方法: 使用价格昂贵的小型机、大型机 使用普通服务器构建服务群集 四、根据群集所针对的目标差异,可分为三种类型: 1.负载均衡群集 2.高可用群集 3....

    一、群集的含义:

    Cluster,集群、群集
    由多台主机构成,但对外只表现为一个整体

    二、存在的问题:

    互联网应用中,随着站点对硬件性能、响应速度、服务稳
    定性、数据可靠性等要求越来越高,单台服务器力不从心

    三、解决方法:

    使用价格昂贵的小型机、大型机
    使用普通服务器构建服务群集

    四、根据群集所针对的目标差异,可分为三种类型:

    1.负载均衡群集
    2.高可用群集
    3.高性能运算群集
    1.1负载均衡群集(Load Balance Cluster)
    提高应用系统的响应能力、尽可能处理更多的访问请求、
    减少延迟为目标,获得高并发、高负载(LB)的整体性能
    LB的负载分配依赖于主节点的分流算法
    2.1高可用群集(High Availability Cluster)
    提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果
    HA的工作方式包括双工和主从两种模式
    3.1高性能运算群集(High Performance Computer Cluster)
    提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力
    高性能依赖于“分布式运算”、“并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力

    五、负载均衡的结构

    第一层,负载调度器(Load Balancer或Director)
    第二层,服务器池(Server Pool)
    第三层,共享存储(Share Storage)

    六、负载均衡的网络架构,有三种常见的

    1.NAT模式:
    地址转换Network Address Translation,简称NAT模式
    类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口
    服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式

    1. TUN模式:
      IP隧道lPTunnel,简称TUN模式
      采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器
      服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信
      3.DR模式
      直接路由Direct Routing,简称DR模式
      采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络
      负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道

    七、关于LVS虚拟服务器

    Linux Virtual Server
    针对Linux内核的负载均衡解决方案
    1998年5月,由我国的章文嵩博士创建
    官方网站: http://www.linuxvirtualserver.org/

    八、LVS的负载调度算法(4种)

    1.轮询(Round Robin)
    将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器),均等地对待每一台服务器,而不管服务器实际的连接数和系统负载
    2.加权轮询(Weighted Round Robin)
    根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越多
    保证性能强的服务器承担更多的访问流量
    3.最少连接(Least Connections)
    根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点
    4.加权最少连接(Weighted Least Connections)
    在服务器节点的性能差异较大时,可以为真实服务器自动调整权重性能较高的节点将承担更大比例的活动连接负载

    九、LVS群集创建与管理办法

    1.创建虚拟服务器
    2.添加、删除服务器节点
    3.查看群集及节点状况
    4.保存分配的策略

    十、实验设计

    1. 加载ip_vs模块,安装ipvsadm工具
    2. 开启路由转发
    3. 新建LVS虚拟服务器并添加节点服务器
    4. 搭建NFS共享存储服务
      4.1 介绍nfs
      ① Network File System,网络文件系统依赖于RPC(远端过程调用)
      ② 需安装nfs-utils、rpcbind软件包
      ③ 系统服务: nfs、rpcbind
      ④ 共享配置文件:/etc/exports
      4.2 使用NFS发布共享资源
      ① 安装nfs-utils、rpcbind软件包
      ② 设置共享目录
      ③ 启动NFS服务程序
      ④ 查看本机发布的NFS共享目录
      4.3.在客户机中访问NFS共享资源
      ① 安装rpcbind软件包,并启动rpcbind服务
      ② 手动挂载NFS共享目录
      ③ fstab自动挂载设置
    5. 配置节点服务器
      5.1 建立测试网站
      5.2 挂载NFS共享存储
      5.3 建立测试网页
    6. 保存规则并测试

    实验环境
    一台调速器 ,拥有俩张网卡,一张网卡定义为外网地址,ip地址为:20.0.0.25,NAT模式。还有一张网卡网卡地址为192.168.30.100,选择vm1 仅主机模式
    俩台web主机,主机ip分别是:192.168.30.101和192.168.30.102 均是vm1网卡
    还有一台存储虚拟机,IP地址为:192.168.30.103

    首先在调度服务器上加一块网卡
    (注释:添加网卡首先要在虚拟器手动添加一块网络设备器,之前已经讲过很多,这边不在重复,如果还有小伙伴不是太清楚,可以看下小编之前的博客)

    [root@localhost ~]# cd /etc/sysconfig/network-scripts/
    [root@localhost network-scripts]# nmcli connection    //这是获取网卡信息
    

    在这里插入图片描述
    我们看到网卡ens36箭头指出的UUID的值复制下来

    [root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36  //复制ens33的配置文件到ens36里面
    [root@localhost network-scripts]# vi ifcfg-ens36    //进入配置文件进行修改
    如下图所示,我们要把文件中UUID值删了,把之前赋值的UUID值复制进去,把所有ens33都改成ens36,其次改下ip地址,这张网卡因为是vm1,所有不需要用到网关
    
    

    在这里插入图片描述

    [root@localhost network-scripts]# systemctl restart network
    [root@localhost network-scripts]# ping 192.168.30.100    //ping一下自己的ip可以通,那证明没有网络配的没有任何问题
    

    在这里插入图片描述

    [root@localhost ~]# modprobe ip_vs               //加载ip_vs 模块
    [root@localhost ~]# cat /proc/net/ip_vs            //查看ip_vs 版本信息
    
    
    1.创建虚拟服务器
    [root@localhost network-scripts]# yum -y install ipvsadm  //ipvsadm是在负载调度器上使用的LVS群集管理工具,通过调用ip_vs模块来添加,删除服务器节点
    [root@localhost network-scripts]# ipvsadm -v    查看版本信息
    [root@localhost network-scripts]# ipvsadm -A -t 20.0.0.25:80 -s rr
    注释:-A表示添加虚拟服务器,-t用来指定VIP地址及tcp端口,
    -s 用来指定负载调度算法—轮询(rr),加权轮训(wrr),最少连接(lc),加权最少连接
    (wlc)
    
    2.添加服务节点
    ipvsadm -a -t 20.0.0.25:80 -r 192.168.30.101:80 -m -w
    ipvsadm -a -t 20.0.0.25:80 -r 192.168.30.102:80 -m -w
    注释:-a表示添加真实服务器,-t用来指定vip地址及tcp端口,-r用来指定RIP
    地址及TCP端口,-m表示使用NAT群集模式,-w表示用来设置权重
    
    3.保存LVS策略
    ipvsadm-save > /opt/ipvsadm
    cat /opt/ipvsadm
    

    在这里插入图片描述

    4.开启调度服务器路由转发功能
    
    vi /etc/sysctl.conf
    如图所示在文件最下面添加一条ip转发命令
    

    在这里插入图片描述

    [root@localhost network-scripts]# sysctl -p 用这条命令检验一下语法格式是否正确
    

    在这里插入图片描述

    在主机192.168.30.103存储服务器进行配置
    [root@localhost ~]# yum-y install nfs-utils
    [root@localhost ~]# yum -y install rpcbind
    [root@localhost ~]# systemctl start nfs
    [root@localhost ~]# systemctl start rpcbind
    [root@localhost ~]# mkdir /opt/51xit /opt/52xit  创建俩个共享目录
    [root@localhost ~]# echo "this is www.51xit.top" >/opt/51xit/index.html
    [root@localhost ~]# echo "this is www.52xit.top" >/opt/52xit/index.html
    [root@localhost ~]# vi /etc/exports
    添加一下俩条命令,意思是该俩个共享目录允许192.168.30网段读写,及其同步
    

    在这里插入图片描述

    [root@localhost ~]# systemctl restart nfs
    [root@localhost ~]# systemctl restart rpcbind
    [root@localhost ~]# systemctl enable nfs
    [root@localhost ~]# systemctl enable rpcbind
    [root@localhost ~]# echo "this is www.51xit.top" >/opt/51xit/index.html   //在共享测试页里面输入信息
    [root@localhost ~]# echo "this is www.52xit.top" >/opt/52xit/index.html
    [root@localhost ~]# showmount -e   展示信息,如果展示不出来就有问题了
    

    在这里插入图片描述

    登录192.168.30.101 web服务器
    [root@localhost ~]# yum-y install nfs-utils    必须要装,否则mount不识别nfs格式,最小化安装要装
    
    [root@localhost ~]# showmount -e 192.168.30.103  展示配置文件的信息
    

    在这里插入图片描述

    做临时挂载,把192.168.30.103主机下/opt/51xit目录里的index.html 挂载到/var/w[root@localhost ~]# yum -y install httpd   安装httpd服务
    
    [root@localhost ~]# mount 192.168.30.103:/opt/51xit /var/www/htmlww/html目录下
    [root@localhost ~]# vi /etc/fstab      做永久挂载
    

    在这里插入图片描述

    [root@localhost ~]# systemctl restart httpd
    [root@localhost ~]# systemctl enable httpd
    
    在登录192.168.30.102 web主机上
    [root@localhost ~]# yum-y install nfs-utils    必须要装,否则mount不识别nfs格式,最小化安装要装
    
    [root@localhost ~]# showmount -e 192.168.30.103 
    [root@localhost ~]# yum -y install httpd   安装httpd服务
    
    [root@localhost ~]# mount 192.168.30.103:/opt/51xit /var/www/html
    [root@localhost ~]# vi /etc/fstab      做永久挂载
    

    在这里插入图片描述

    [root@localhost ~]# systemctl restart httpd
    [root@localhost ~]# systemctl enable httpd
    
    
    先在浏览器上输入web服务器的ip地址,看下服务器是否是正常的
    

    在这里插入图片描述
    在这里插入图片描述

    测试正常之后,再输入外网口ip地址20.0.0.25,测试下是否正常 
    

    在这里插入图片描述

    轮询是有一个响应时间的,所有我们再次输入ip20.0.0.25时,一定要等待一会,才会跳转到this is www.52xit.top
    

    在这里插入图片描述

    展开全文
  • 分布式数据库中负载均衡技术的实现,张红旗,任维政,随着互联网的快速发展,用户对于信息获取的正确性、及时性要求越来越高。数据库系统是数据存储、信息检索的主要手段,是制约Web系
  • 医院行业数据库负载均衡数据零丢失容灾参考方案
  • 企业ERP数据库负载均衡数据零丢失容灾参考方案
  • 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。 一、...

    随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。

    一、负载均衡技术
    负载均衡集群是由一组相互独立的计算机系统构成,通过常规网络或专用网络进行连接,由路由器衔接在一起,各节点相互协作、共同负载、均衡压力,对客户端来说,整个群集可以视为一台具有超高性能的独立服务器。

    1、实现原理
    实现数据库的负载均衡技术,首先要有一个可以控制连接数据库的控制端。在这里,它截断了数据库和程序的直接连接,由所有的程序来访问这个中间层,然后再由中间层来访问数据库。这样,我们就可以具体控制访问某个数据库了,然后还可以根据数据库的当前负载采取有效的均衡策略,来调整每次连接到哪个数据库。
    2、实现多据库数据同步
    对于负载均衡,最重要的就是所有服务器的数据都是实时同步的。这是一个集群所必需的,因为,如果数不据实时、不同步,那么用户从一台服务器读出的数据,就有别于从另一台服务器读出的数据,这是不能允许的。所以必须实现数据库的数据同步。这样,在查询的时候就可以有多个资源,实现均衡。比较常用的方法是Moebius for SQL Server集群,Moebius for SQL Server集群采用将核心程序驻留在每个机器的数据库中的办法,这个核心程序称为Moebius for SQL Server 中间件,主要作用是监测数据库内数据的变化并将变化的数据同步到其他数据库中。数据同步完成后客户端才会得到响应,同步过程是并发完成的,所以同步到多个数据库和同步到一个数据库的时间基本相等;另外同步的过程是在事务的环境下完成的,保证了多份数据在任何时刻数据的一致性。正因为Moebius 中间件宿主在数据库中的创新,让中间件不但能知道数据的变化,而且知道引起数据变化的SQL语句,根据SQL语句的类型智能的采取不同的数据同步的策略以保证数据同步成本的最小化。

    数据条数很少,数据内容也不大,则直接同步数据
    数据条数很少,但是里面包含大数据类型,比如文本,二进制数据等,则先对数据进行压缩然后再同步,从而减少网络带宽的占用和传输所用的时间。
    数据条数很多,此时中间件会拿到造成数据变化的SQL语句, 然后对SQL语句进行解析,分析其执行计划和执行成本,并选择是同步数据还是同步SQL语句到其他的数据库中。此种情况应用在对表结构进行调整或者批量更改数据的时候非常有用。
    3、优缺点
    (1) 扩展性强:当系统要更高数据库处理速度时,只要简单地增加数据库服务器就 可以得到扩展。
    (2) 可维护性:当某节点发生故障时,系统会自动检测故障并转移故障节点的应用,保证数据库的持续工作。
    (3) 安全性:因为数据会同步的多台服务器上,可以实现数据集的冗余,通过多份数据来保证安全性。另外它成功地将数据库放到了内网之中,更好地保护了数据库的安全性。
    (4) 易用性:对应用来说完全透明,集群暴露出来的就是一个IP

    (1) 不能够按照Web服务器的处理能力分配负载。
    (2) 负载均衡器(控制端)故障,会导致整个数据库系统瘫痪。

     

    二、数据库的读写分离
    1,实现原理:读写分离简单的说是把对数据库读和写的操作分开对应不同的数据库服务器,这样能有效地减轻数据库压力,也能减轻io压力。主数据库提供写操作,从数据库提供读操作,其实在很多系统中,主要是读的操作。当主数据库进行写操作时,数据要同步到从的数据库,这样才能有效保证数据库完整性。

    (ebay的读写比率是260:1,ebay的读写分离)

    (微软数据库分发) 

    2,实现方法:在MS Sql server中可以使用发布定义的方式实现数据库复制,实现读写分离,复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式。使用复制技术,用户可以将一份数据发布到多台服务器上。复制技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性。SQL SERVER复制技术类型有三种,分别是:快照复制、事务复制、合并复制。SQL SERVER 主要采用出版物、订阅的方式来处理复制。源数据所在的服务器是出版服务器,负责发表数据。出版服务器把要发表的数据的所有改变情况的拷贝复制到分发服务器,分发服务器包含有一个分发数据库,可接收数据的所有改变,并保存这些改变,再把这些改变分发给订阅服务器。

    3,优缺点
    (1)数据的实时性差:数据不是实时同步到自读服务器上的,当数据写入主服务器后,要在下次同步后才能查询到。

    (2)数据量大时同步效率差:单表数据量过大时插入和更新因索引,磁盘IO等问题,性能会变的很差。

    (3)同时连接多个(至少两个)数据库:至少要连接到两个数据数据库,实际的读写操作是在程序代码中完成的,容易引起混乱

    (4)读具有高性能高可靠性和可伸缩:只读服务器,因为没有写操作,会大大减轻磁盘IO等性能问题,大大提高效率;只读服务器可以采用负载均衡,主数据库发布到多个只读服务器上实现读操作的可伸缩性。

     

    三、数据库/数据表  拆分(分布式) 

    通过某种特定的条件,将存放在同一个数据库中的数据分散存放到多个数据库上,实现分布存储,通过路由规则路由访问特定的数据库,这样一来每次访问面对的就不是单台服务器了,而是N台服务器,这样就可以降低单台机器的负载压力。提示:sqlserver 2005版本之后,可以友好的支持“表分区”。

    垂直(纵向)拆分:是指按功能模块拆分,比如分为订单库、商品库、用户库...这种方式多个数据库之间的表结构不同。

    水平(横向)拆分:将同一个表的数据进行分块保存到不同的数据库中,这些数据库中的表结构完全相同。

    (纵向拆分)

     (横向拆分)

     

    1,实现原理:使用垂直拆分,主要要看应用类型是否合适这种拆分方式,如系统可以分为,订单系统,商品管理系统,用户管理系统业务系统比较明的,垂直拆分能很好的起到分散数据库压力的作用。业务模块不明晰,耦合(表关联)度比较高的系统不适合使用这种拆分方式。但是垂直拆分方式并不能彻底解决所有压力问题,例如 有一个5000w的订单表,操作起来订单库的压力仍然很大,如我们需要在这个表中增加(insert)一条新的数据,insert完毕后,数据库会针对这张表重新建立索引,5000w行数据建立索引的系统开销还是不容忽视的,反过来,假如我们将这个表分成100个table呢,从table_001一直到table_100,5000w行数据平均下来,每个子表里边就只有50万行数据,这时候我们向一张只有50w行数据的table中insert数据后建立索引的时间就会呈数量级的下降,极大了提高了DB的运行时效率,提高了DB的并发量,这种拆分就是横向拆分

    2,实现方法:垂直拆分,拆分方式实现起来比较简单,根据表名访问不同的数据库就可以了。横向拆分的规则很多,这里总结前人的几点,

    (1)顺序拆分:如可以按订单的日前按年份才分,2003年的放在db1中,2004年的db2,以此类推。当然也可以按主键标准拆分。

    优点:可部分迁移

    缺点:数据分布不均,可能2003年的订单有100W,2008年的有500W。

    (2)hash取模分: 对user_id进行hash(或者如果user_id是数值型的话直接使用user_id的值也可),然后用一个特定的数字,比如应用中需要将一个数据库切分成4个数据库的话,我们就用4这个数字对user_id的hash值进行取模运算,也就是user_id%4,这样的话每次运算就有四种可能:结果为1的时候对应DB1;结果为2的时候对应DB2;结果为3的时候对应DB3;结果为0的时候对应DB4,这样一来就非常均匀的将数据分配到4个DB中。
    优点:数据分布均匀
    缺点:数据迁移的时候麻烦;不能按照机器性能分摊数据 。
    (3)在认证库中保存数据库配置
    就是建立一个DB,这个DB单独保存user_id到DB的映射关系,每次访问数据库的时候都要先查询一次这个数据库,以得到具体的DB信息,然后才能进行我们需要的查询操作。
    优点:灵活性强,一对一关系
    缺点:每次查询之前都要多一次查询,会造成一定的性能损失。

    本文出自http://blog.csdn.net/dinglang_2009/http://www.cnblogs.com/dinglang/转载请注明出处。

    展开全文
  • 基于Oracle RAC数据库的通信管理系统负载均衡方案.pdf
  • 数据库负载均衡(上)

    千次阅读 2019-06-23 22:08:02
    虽然搭建了集群,但是使用数据库负载均衡,单节点处理所有请求,负载高,性能差 使用Haproxy做负载均衡,请求被均匀分发给每个节点,单节点负载低,性能好 负载均衡中间件对比  负载均衡首先是数据库的...
  • SQL Server数据库实现负载均衡

    千次阅读 2018-08-25 18:39:29
    SQL Server数据库负载方案 ----------------------------------------------------------------------------------------------------------------------------   微软官方方案: 1、通过分库分表、分库磁盘IO...
  • 1.使用数据库自身提供的事务复制可以实现数据库负载均衡集群,但有缺点:通过事务复制实现数据同步大约需要1~2秒的时间,在同步的过程中,数据有可能发生脏读。如果使用对等事务复制,有可能由于多个数据库服务器都...
  • 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。  一...
  • 随着传统的数据库、计算机网络和数字通信技术的飞速发展,以数据分布存储和分布处理为主要特征的分布式数据库系统的研究和开发越来越受到人们的关注。但由于其开发较为复杂,在一定程度上制约了它的发展。基于此,...
  • 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。  一...
  • 数据库数据太多了怎么办,一个表有一亿个数据(特别大的访问量到数据库上)?分库分表?Mysql的主从复制 1.使用优化查询的方法 1.使用索引 应尽量避免全表扫描,首先应考虑在 where 及 order by ,group by 涉及的...
  • 比如读数据和写数据之间的同步,写到不同的数据库 之间的同步。 目前想到的解决办法是: 读数据和写数据:读写分离,写作为主服务器,读在从服务器,主从同步。 写到不同的数据库 之间的同步:写做同步,写的时候...
  • 前言 数据库实时备份的需求很常见...1、通过 MySQL Replication 实现负载均衡与读写分离(主数据库仅更新,从数据库仅读取),提升数据库性能。 2、通过 MySQL Replication 实现数据的实时备份,保证数据安全。 3、通过
  • • 水平切分数据库:可以降低单台机器的负载,同时最大限度的降低了宕机造成的...• 集群方案:解决了数据库宕机带来的单点数据库不能访问的问题; • 读写分离策略:最大限度了提高了应用中读取数据的速度和并发量。
  • 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。 一、...
  • · 一台云数据库(RDS) · 一台负载均衡 · linux版 jdk1.6(weblogic 12c 对高版本jdk支持稳定) · weblogic 12c · ssh(上传文件比较方便) 二、项目背景 公司需要把风险规则项目部署到云服务器...
  • 数据库之如何应对数据倾斜

    千次阅读 2019-09-15 18:38:21
    数据库之如何应对数据倾斜...数据分布严重不均衡 面试中,学习中,工作中常常会遇到数据倾斜,那么数据倾斜到底是什么意思?如何应对数据倾斜呢? 什么是数据倾斜 数据倾斜直观来说,就是描述当你的sql任务运行到99%...
  • 从MySQL到亚马逊的RDS(关系型数据库服务,Relational Database Service),业界有很多数据库系统供开发者存储、查询和管理数据。随着海量计算的持续发展,给传统数据库带来了不少挑战,而云原生数据库却可以应对这些...
  • 转载自IT168:...对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。 一、负载均衡技术 负载均衡集群是由一组相互独立
  • 数据库性能及容灾一体化解决方案:双重负载均衡、读写分离,彻底解决数据库性能问题;数据库双活集群,彻底解决数据库系统的高可靠性及高可用性问题,做到故障时候数据零丢失,服务停止。
  • 什么是读写分离,说白了就是mysql服务器读的操作和写的操作是分开的,当然这个需要两台服务器,master负责写,slave负责读,当然我们可以使用多个slave,这样我们也实现了简单意义上的高可用和负载均衡,只不过这种...
  • MySQL数据库面试题(2020最新版)

    万次阅读 多人点赞 2020-03-10 17:20:40
    数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)............

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 218,872
精华内容 87,548
关键字:

数据库数据不均衡