博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
社区投稿 | DBLE rule.xml 配置解析
阅读量:6135 次
发布时间:2019-06-21

本文共 1948 字,大约阅读时间需要 6 分钟。

文章来源:爱可生云数据库

作者:余朝飞

DBLE项目介绍

DBLE官方网站:

可以详细了解DBLE的背景和应用场景,本文不涉及到的细节都可在官方文档获得更细节都信息;对于刚了解到同学,可以以本文为快速入门基础
DBLE官方项目:
如对源码有兴趣或者需要定制的功能的可以通过源码编译
DBLE下载地址:
建议下载最新的releases版本,下载tar压缩包即可,如有源码编译需求的,可以下载源码包

DBLE的主要配置文件

上一篇"DBLE Schema.xml 配置解析"详细介绍了DBLE之中关于Scema.xml的配置,本篇文章将继续为大家讲解一下DBLE中Rule.xml文件的配置。

DBLE的配置文件都在conf目录里面,常用的几个配置文件如下:

文件 说明
server.xml DBLE server相关参数定义,包括dble性能,定时任务,端口,用户配置等;本文主要涉及到访问用户的配置
schema.xml DBLE具体分片定义,规定table和schema以及dataNode之间的关系,指定每个表格使用哪种类型的分片方法,定义每个dataNode的连接信息等
rule.xml DBLE实际用到的分片算法的配置

rule.xml配置解析

其中rule.xml是日常配置分片算法的时候最常用到的配置文件,我们通过思维导图的方式给大家整理了DBLE的rule.xml的配置,需要注意的是思维导图不能代替看文档,导图只能起着概括归纳的作用,详细的细节还请参考官方文档。

rule.xml举例

从分片的数据在各个数据节点分布来看,分片可分为连续分片和离散分片,连续分片就是将一定范围内的数据全部分布在某一DataNode, 离散分布则是通过hash取模等方法将数据打散较为均匀地分布在各个DataNode。

分片 连续分片 离散分片
优点 并发访问能力有限,扩容迁移代价小 并发访问能力增强 范围条件查询性能提升
缺点 存在数据热点的可能性,并发访问能力受限于单一或少量DataNode . 数据扩容比较困难,需要对整体数据做重新分布。
举例 date,numberrange hash, stringhash, patternrange
注:hash,patternrange分片方式如果配置分片区间足够宽的话也是可以当做连续分片的。

以下我以PatternRange算法为例,讲解一下如何配置该拆分算法,比如当前有一张表tasK_log已经有1000万的数据,这张表又因为需要和其他表进行关联查询,单表太大进行关联时异常缓慢,因此我们需要对这张表做拆分, 将这张表分别放在三个分片上,dn1,dn2,dn3。

  • schema.xml中的配置如下
  • rule.xml中配置如下:
id
three_node_range
partition.txt
1024
0
  • mapfile partition.txt定义如下:
[root@localhost ~]# cat partition.txt 0-255=0256-511=1512-1024=2

查找路由时,将id字段与patternValue取模,即计算M = id % patternValue,

  • 如果M在0-255之间,在数据落在dn1分片。
  • 如果M在256-511之间,在数据落在dn2分片。
  • 如果M在512-1024之间,则数据落在dn3分片。
  • 如果都匹配不上,则落在默认节点defaultNode dn1分片(理论上在这个例子中是不可能匹配不上的)

关于每一种拆分算法的详细介绍请参加官方文档介绍。

总结

rule.xml定义实际用到的拆分算法以及该拆分算法对应到的逻辑库使用使用算法,熟悉各种拆分算法的详细配置及其适用场景,才方便我们在众多数据拆分场景选择并配置合适的拆分规则,同时这也是适用分库分表中间件的第一步,并且实地演示了一个小小的拆分例子,使用到了patternrange算法。

将表的详细拆分规则写在配置中,这是一种很"傻"的方式,但是这也是万不得已的一种选择,如果不通过配置文件的方式告诉中间件这些信息,那么中间件就无从得知底层具体的数据分布情况,也就达不到我们最终想要分库分表的目的了。

图片描述

转载地址:http://poeua.baihongyu.com/

你可能感兴趣的文章
解决Mac下SSH闲时自动中断的问题
查看>>
在JavaScript中理解策略模式
查看>>
ArchSummit 深圳 2017 成功举办,探索未来互联网架构
查看>>
不知道如何提升深度学习性能?我们为你整理了这份速查清单
查看>>
Go 2提上日程,官方团队呼吁社区给新特性提案提交反馈
查看>>
技术绩效考量:你们可能都做错了
查看>>
“亲切照料”下的领域驱动设计
查看>>
除了输入法,移动端AI还有哪些想象空间?
查看>>
回家路上想起来关于Js一个有趣的东西
查看>>
B端大数据应用的架构实践与思考
查看>>
2019 SRE 调查报告:事故处理是主要工作,SRE 压力山大
查看>>
React创建组件的三种方式及其区别
查看>>
大中型企业的天网:Apache Geode
查看>>
Windows Server已可安装Docker,Azure开始支持Mesosphere
查看>>
本地部署比SaaS更容易满足GDPR要求吗?
查看>>
业内预测:2017中国光通信设备规模将达近千亿元
查看>>
网页开发从业者仍更重视桌面程序及网页应用
查看>>
如何解决mysql数据库8小时无连接自动关闭
查看>>
ASP.NET Aries 入门开发教程5:自定义列表页工具栏区
查看>>
Rushcrm:如何利用CRM系统的权限设置
查看>>