1、为什么要设计成分布式数据库,数据为什么要分区?

当数据量很大的时候,即使服务器在没有任何压力的情况下,某些复杂的查询操作都会非常缓慢,影响了最终用户的体验。

在大数据量下对数据库的装载与导出,备份与恢复,结构的调整,索引的调整等都会让数据库停止服务或者高负荷运转很长时间,影响了数据库的可用性和可管理性。

这个时候靠提升服务器的硬件配置是起不到作用的,只有靠分区把数据分成更小的部分才能提高数据库的可用性和可管理性。

通过分区把各部分数据放到不同的机器中,每次查询可以由多个机器上的CPU,I/O来共同负载,通过各节点并行处理数据来提高性能。

分区的方法

Moebius for SQL Server支持两种分区方式:Hash分区和线性分区。

Hash分区

Hash分区是将表按某一字段的值均匀地分布到若干个指定的分区中。

优点:每个分区内分配的数据比较平均,承载的压力也就比较平均,机器能够比较充分的利用。

缺点:不容易扩展,如果扩展新的分区会涉及到数据的重新分配,因此上在设计的时候要提前的规划好。

Moebius for SQL Server支持把多个分区数据放在一个机器上然后再根据压力逐个的拆到新机器中去,这样既可以保证了分区的规划又不浪费机器,实现了线性扩展;

线性分区

线性分区也称范围分区,将表按某一字段的取值范围进行分区,比如按照时间每个月的数据在一个分区中。

优点:扩展性能比较好,因为数据的增长是有一定规律的。

缺点:每个分区内的数据或者压力不是很平均,大部分的业务可能都是越老的数据被访问的频率越低,这样老的分区的压力就比新分区承载的压力低,从而使机器的利用率不高。

Moebius for SQL Server支持把多个分区数据放在一个机器上,所以可以通过新老分区的交替使用来提高机器的利用率。

当前SQl Server上出现的一些将数据库拆分的技术

分区表

SQL Server 2005引入的分区表技术,让用户能够把数据分散存放到不同的物理磁盘中,提高这些磁盘的并行处理能力,达到优化查询性能的目的。但是分区表只能把数据分散到同一机器的不同磁盘中,也就是还是依赖于一个机器,不能从根本上解决问题。理想的解决办法是把数据分散到不同的机器中,通过多个机器上的CPU,I/O的并行处理来提高性能。

分布式分区视图

分布式分区视图允许用户将大型表中的数据分散到不同机器的数据库上,用户不需要知道直接访问哪个基础表而是通过视图访问数据,在开发上有一定的透明性。但是并没有简化分区数据集的管理、设计。用户使用分区视图时,必须单独创建、管理每个基础表(在其中定义视图的表),而且必须单独为每个表管理数据完整性约束,管理工作变得非常复杂。而且还有一些限制,比如不能使用自增列,不能有大数据对象。另外经过实际测试,对于符合分区规则的查询性能还可以,对于全局查询并不像我们预期的那样,是并行计算,有时还不如不分区的响应快。

库表散列

一些大公司也在自己开发基于库表散列的数据库架构,比如My Space经过数次数据库升级,最终采用按照用户进行的库表散列,微软为MSN/Hotmail和纳斯达克开发的数据依赖型路由(Data-Dependent Routing,DDR)。但是这些都是基于自己业务逻辑进行的,没有一个通用的实现。客户在实际应用中要投入很大的研发成本,面临很大的风险。

Moebius for SQL Server分布式网格集群

Moebius for SQL Server 在结构上分为数据层数据库和访问层数据库两部分。

从图中可以看出,下面的像网格一样的机器叫数据层,数据层中每个机器上存储着数据全集的一个分区,每一横行组成一个数据全集,每一纵列是某个分区的多份相同的数据。目的是达到查询时负载均衡的效果,同时也是高可用性的保障:某个列的机器出现问题后其他的机器会负载访问。

这样一个查询要查询几个机器才能得到结果,一个插入语句可能要同时影响几个机器上的数据。为了不让这样一个复杂的结构暴露给应用程序和开发人员,在数据层上面又放了一层机器叫中间层也叫访问层,访问层机器负责维护各个机器关系的配置信息,处理SQL语句,根据SQL语句的类型和条件来决定由哪些机器来提供服务,缓存数据等工作。

Moebius for SQL Server分布式网格集群工作原理

以下从DML语法的角度介绍一下中间件的工作方式

INSERT:

当中间层接到一个INSERT语句后,通过分析SQL语句得到要插入的表, 这个表的分区列,再根据分区列的值决定应该这条数据插入到第几个分区的数据中去,再从配置信息中得到这个分区列中有多少可用的机器,然后插入数据。

SELECT:

当中间层接受到一个查询语句后,首先分析该语句要查找的表,根据要查找的表和语句的WHERE条件计算出要从某一个分区中取数据还是几个分区列中去取数据,取完数据后在中间层合并后再返回给应用程序。要说的是每个分区列可以有多份相同的数据,每个查询从每列可用的机器上随机找出一个数据库进行查找。从而达到查询的负载均衡,即提高了查询的性能,又保障了整个系统的可靠性。如图所示,全局查询和局部查询

大型分布式数据库集群的研究相关推荐

  1. MySQL Cluste(入门篇)—分布式数据库集群搭建

    目录 前言 1 概述 1.1 分布式数据库集群 1.2 数据库的分布式和主从的区别 2 环境说明 2.1 系统环境 2.2 软件环境 3 安装MySQL Cluster 4 配置安装管理节点 4.1 ...

  2. MySQL Cluste—分布式数据库集群搭建

    一.为什么要用MySQL Cluset分布式集群? 大家可以看这两位大佬的文章: https://blog.csdn.net/qq_15092079/article/details/82665307 ...

  3. Mycat高可用架构原理_Mycat集群搭建_HA高可用集群_高可用_单表存储千万级_海量存储_分表扩展---MyCat分布式数据库集群架构工作笔记0027

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 前面我们已经讲了,对于数据库来说,mycat可以,我们通过搭建一主一从,双主双从,来实现数据库集群 ...

  4. 基于分布式数据库集群的大数据职位信息统计

    目录 任务一: MongoDB 分布式集群关键配置信息截图(启动参数文件.初始化参数文件.启动命令等) ch0的参数文件配置: ​编辑 ch1的参数文件配置: ​编辑chconfig的参数文件配置: ...

  5. 分表扩展全局序列实际操作_高可用_单表存储千万级_海量存储_分表扩展---MyCat分布式数据库集群架构工作笔记0026

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们动手配置: 全局序列,来给咱们的集群,保证id的自增长和不重复. 首先我们在dn1上创建这 ...

  6. TiUP在线布署TIDB分布式数据库集群节点删除

    检查当前集群节点状态: tiup cluster display hdcluster Starting component `cluster`: /home/tidb/.tiup/components ...

  7. 分表扩展全局序列原理_高可用_单表存储千万级_海量存储_分表扩展---MyCat分布式数据库集群架构工作笔记0025

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们来说一下全局序列,现在我们做了分布式以后,东西都是全局的了 都要加个全局,以前可是没有,都 ...

  8. MyCat分布式数据库集群架构工作笔记0021---高可用_单表存储千万级_海量存储_水平分表全局表

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后咱们说现在咱们已经实现了水平分表,ER表,但是现在还有一个问题 下面这个 字典表,因为字典表放 ...

  9. MyCat分布式数据库集群架构工作笔记0020---高可用_单表存储千万级_海量存储_水平分表ER表

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 上面咱们配置了orders订单表的,水平分片,把orders表的,数据放到了不同的数据库上 下面咱 ...

最新文章

  1. 独家|OpenCV 1.2 如何用OpenCV扫描图像、查找表和测量时间(附链接)
  2. Kali安装之后必做20件事 第二版(2017-07-07不断更新)
  3. android8.1状态栏图标,Android 8.1 去掉 Launcher3 默认给 icon 增加的白边
  4. 一个人的生活可以简约到什么程度?
  5. 4.1 - 《机器学习基石》Home Work 1 Q.15-17
  6. linux tricks 之数据对齐。
  7. 使用Servlet技术~登录-02
  8. 怎样使用BMFont生成fnt字体
  9. 学会这些Sketchup技巧,工作效率提高一半
  10. 冒泡排序(图解+代码详解)
  11. STM32工作笔记0046---认识杜邦线_以及如何区分杜邦线公母_以及排线和杜邦线的区别
  12. pandas 按列 tolist
  13. Java对接支付宝的支付、退款、提现
  14. excel 删除重复项_在Excel 2013列表中删除重复项
  15. Activiti 数据库表结构 ACT_GE_BYTEARRAY
  16. Packet Tracer - 在 WLC 上配置基本的 WLAN
  17. html5+css3笔记整理
  18. AdBlock/AdBlock Plus 屏蔽广告
  19. oracle dul 12.2.0.2.4 测试
  20. 自然语言分词词性标注指代

热门文章

  1. infer.net 入门2 用一个侦探故事来讲解,通俗易懂
  2. 富士康java面试_富士康Java开发面试题目
  3. wifi信息修改插件ios_iOS免越狱修改运营商信息/修改“应用图标标记”颜色
  4. android+蓝牙+文件传输,蓝牙文件传输Android
  5. win10提示目前无法访问SmartScreen
  6. 3D打印出活体心脏,AI让你体验登月!|技术前沿洞察
  7. 超市管理系统的html页面,基于WEB的超市管理系统_站内搜索_Web开发网
  8. WIN10桌面图标变成白文件的一种解决方法
  9. SSL证书快速部署到服务器WebServer
  10. C++:CompareNoCase函数