读书笔记-Mycat权威指南-08-Mycat中的Join

Join

Join 绝对是关系型数据库中最常用一个特性,然而在分布式环境中,跨分片的 join 确是最复杂的,最难解决一 个问题。

Join:inner ,left,right,full,cross

尽量避免使用 Left join 或 Right join,而用 Inner join。

在使用 Left join 或 Right join 时,ON 会优先执行,where 条件在最后执行,所以在使用过程中,条件尽 可能的在 ON 语句中判断,减少 where 的执行少用子查询,而用 join。

Mycat 目前版本支持跨分片的 join,主要实现的方式有四种:全局表,ER 分片,catletT(人工智能)和 ShareJoin,ShareJoin 在开发版中支持,前面三种方式 1.3.0.1 支 持。

全局表

各个分片冗余存储

ER分片

将子表的存储位置依赖于主表,并且物理上紧邻存放,因此彻底解决了 JION 的效率和性能问题。

根据这一思路,提出了基于 E-R 关系的数据分片策略,子表的记录与所关联的父表记录存放在同一个数据分 片上。

Share Join

ShareJoin 是一个简单的跨分片 Join,基于 HBT 的方式实现。 原理就是解析 SQL 语句,拆分成单表的 SQL 语句执行,然后把各个节点的数据汇 集。

catlet(人工智能)

解决跨分片的 SQL JOIN 的问题,远比想象的复杂,而且往往无法实现高效的处理。

既然如此,就依靠人工 的智力,去编程解决业务系统中特定几个必须跨分片的 SQL 的 JOIN 逻辑。

MyCAT 提供特定的 API 供程序员调用,这就是 MyCAT 创新性的思路——人工智能。

以一个跨节点的 SQL 为例。 Select a.id,a.name,b.title from a,b where a.id=b.id 其中 a 在分片 1,2,3 上,b 在 4,5,6 上,需要把数据全部拉到本地(MyCAT 服务器),执行 JOIN 逻辑。

时间: 2024-10-28 14:28:03

读书笔记-Mycat权威指南-08-Mycat中的Join的相关文章

读书笔记----JavaScript 权威指南(一)

0.前言 最近小编我刚刚结束上一段的工作,结果立马就马不停蹄的开始了新一轮的工作了,表示无辜,(o′?ェ?`o),程序猿真是个累死人不偿命的工作呀. 今天晚上看到同事新启封的 JavaScript 权威指南,心血来潮的想,如果我能把这个书里面的重点以及具体知识点梳理出来,那么后来的人是不是就能少走一些弯路呢? 抱着这个想法,于是就开始了今天晚上的读书之旅,更由于小编喜欢整理东西这个习惯,才有了此文. 真心希望看到这篇文章的你,能够感受到小编那深沉的爱!~ 1.JavaScript 语法核心 之

[读书笔记] CSS权威指南1: 选择器

通配选择器 可以与任何元素匹配,就像是一个通配符 /*每一个元素的字体都设置为红色*/ * { color: red; } 元素选择器 指示文档元素的选择器. /*为body的字体设置为红色*/ body { color: red: } 分组 选择器分组 h1, h2, h3 { color: red; } 声明分组 h1 { font: 18px Helvetica; color: purple; background: aqua; } 结合选择器和声明分组 h1, h2, h3 { font

[读书笔记] CSS权威指南2: 结构和层叠

层叠样式表中最基本的一个方面可能就是层叠——冲突的声明要通过这个层叠过程排序,并由此确定最终的文档表示.这个过程的核心是选择器及其相关声明的特殊性,以及继承机制. 特殊性 对于每个规则,用户代理会计算选择器的特殊性,并将这个特殊性附加到规则中的各个声明.如果一个元素有两个或多个冲突的属性声明,那么有最高特殊性的声明就会胜出. 选择器的特殊性由选择器本身的组件确定.特殊性值表述为4个部分,如:0,0,0,0.一个选择器的具体特殊性如下确定: 对于选择器中给定的各个ID属性值,加0,1,0,0. 对

读书总结——CSS权威指南

几个月前读了这本书——<CSS权威指南>,之前用css都是在w3school上看的,或者按F12看别人的代码,这是我完整的读的第一本关于css的书,感觉还是收获挺大的,最近要总结一下自己的知识,所以又重新看了一遍,又本着温故知新.边看边写的想法写了这篇文章,希望能对自己或别人有些帮助. 第一章 HTML 标记与文档结构 主要介绍了HTML及其标记 1.标签分为闭合标签与自闭合标签 闭合标签格式:<标签名>文本内容</标签名> e.g. <h1>Words b

读书笔记-Mycat权威指南-09-全局序列号

全局序列号介绍 在实现分库分表的情况下,数据库自增主键已无法保证自增主键的全局唯一.为此,需要新的实现方式. 本地文件方式 原理:此方式 MyCAT 将 sequence 配置到文件中,当使用到 sequence 中的配置后,MyCAT 会更下 classpath 中的 sequence_conf.properties 文件中 sequence 当前的值. 配置方式: 在 sequence_conf.properties 文件中做如下配置, 使用示例: insert into table1(id

Hadoop读书笔记(十四)MapReduce中TopK算法(Top100算法)

Hadoop读书笔记系列文章:http://blog.csdn.net/caicongyang/article/category/2166855 (系列文章会逐步修整完成,添加数据文件格式预计相关注释) 1.说明: 从给定的文件中的找到最大的100个值,给定的数据文件格式如下: 533 16565 17800 2929 11374 9826 6852 20679 18224 21222 8227 5336 912 29525 3382 2100 10673 12284 31634 27405 1

【MongoDB】探讨《MongoDB权威指南》书籍中的几点错误

今天进一步学习MongoDB,学习资料是<MongoDB权威指南>,详细见如下封面: 在阅读过程中发现了如下错误: 第一处:P29页批量插入,在书中讲到可以利用batchInsert函数实现批量插入,我运行时候发现系统提示没有这个方法.我用的软件是2.6.4.我以为是版本过低,然后下载2.6.6 最新版本进行测试,报同样的错误: Property 'batchInsert' of object student.students is not a function 后来查询用命令:db.stud

读书笔记-Mycat权威指南-03-Mycat中的概念

数据库中间件 Mycat 是一个开源的分布式数据库系统,但是由于真正的数据库需要存储引擎,而 Mycat 并没有 存储引擎,所以并不是完全意义的分布式数据库系统. Mycat 是数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服 务. 由于前面讲的对数据进行分片处理之后,从原有的一个库,被切分为多个分片数据库,所有的分片数据库集 群构成了整个完整的数据库存储. 数据被分到多个分片数据库后,应用如果需要读取数据,就要需要处理多个数据源的数据. 如果没有数据库中间件,那么应用将直接面

读书笔记-Mycat权威指南-10-分片规则

分片规则概述 在数据切分处理中,特别是水平切分中,中间件最终要的两个处理过程就是数据的切分.数据的聚合. 选择 合适的切分规则,至关重要,因为它决定了后续数据聚合的难易程度,甚至可以避免跨库的数据聚合处理. 前面讲了数据切分中重要的几条原则,其中有几条是数据冗余,表分组(Table Group), 这都是业务上规 避跨库 join 的很好的方式,但不是所有的业务场景都适合这样的规则,因此本章将讲述如何选择合适的切分规则. Mycat 全局表 如果你的业务中有些数据类似于数据字典,比如配置文件的配