mycat权威指南-读书笔记

本文详细介绍了数据库的垂直和水平拆分,包括拆分的概念、优缺点及分片规则。深入探讨了mycat的工作原理,解析了ER表、全局表和全局序列号等重要概念,最后概述了mycat的目录结构及其作用。

1.数据库垂直拆分

1.1)什么是垂直拆分

垂直拆分是指按照业务将表进行分类,分布到不同的数据库上面,这样也就将数据或者说压力分担到不同的库上面。

1.2)拆分的优缺点

优点:拆分后业务更清晰,数据和代码维护更简单。
缺点:表无法join,只能通过接口,事务处理复杂。

2.数据库水平拆分

2.1)什么是水平拆分

水平拆分不是将表做分类,而是按照某个字段的某种规则将同一个表的数据分散到多个库中,每个表包含一部分数据。

2.2)分片规则
  • 按照用户ID求模,将数据分散到不同的数据库。
  • 按照日期,将不同月甚至日的数据分散到不同的库中。
  • 按照某个特定的字段求模,或者根据特定范围段分散到不同的库中。
2.3)拆分优缺点

优点:不存在单表大数据,性能瓶颈,提高了系统稳定性和负载能力。
缺点:分片规则不好把握,多次扩展难度较大。

3.mycat工作原理

mycat会拦截用户发送过来的SQL语句, 首先对SQL语句做了一些特定的分析: 如分片分析、路由分析、读写分离分析、缓存分析,然后将此SQL发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。

4.几个重要概念

4.1)ER表

子表的记录与所关联的父表记录存放在同一个数据分片上,即子表依赖于父表,这样可保证数据join不会有跨库操作。

4.2)全局表

一般变动不频繁, 数据量不大的表可定义为全局表, mycat通过数据冗余来解决这类表的join, 即所有的分片都有一份数据的拷贝。数据冗余是解决跨分片join的一种很好的思路。

4.3)全局序列号

数据切分后, 原有的关系数据库中的主键约束在分布式条件下将无法使用,因此需要引入外部机制保证全局性数据唯一性标识,这就是全局序列号。

5.mycat目录结构

5.1)bin目录

存放了一些可执行命令

5.2)conf目录

server.xml: mycat服务器参数调整和用户授权的配置
schema.xml: 逻辑库定义和表以及分片定义的配置
rule.xml: 分片规则的配置

5.3)lib目录

存放mycat依赖的一些jar文件

它是一个开源的分布式数据库系统,是一个实现了 MySQL 协议的的 Server,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以用 MySQL 原生(Native)协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信, 其核心功能是分表分库,即将一个大表水平分割为 N 个小表,存储在后端 MySQL 服务器里或者其他数据库里。 Mycat 发展到目前的版本,已经不是一个单纯的 MySQL 代理了,它的后端可以支持 MySQL、SQL Server、 Oracle、DB2、PostgreSQL 等主流数据库,也支持 MongoDB 这种新型 NoSQL 方式的存储,未来还会支持更 多类型的存储。而在最终用户看来,无论是那种存储方式,在 Mycat 里,都是一个传统的数据库表,支持标准的 SQL 语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降低开发难度,提升开发速度,在测试阶 段,可以将一个表定义为任何一种 Mycat 支持的存储方式,比如 MySQL 的 MyASIM 表、内存表、或者 MongoDB、LevelDB 以及号称是世界上最快的内存数据库 MemSQL 上。试想一下,用户表存放在 MemSQL 上, 32 大量读频率远超过写频率的数据如订单的快照数据存放于 InnoDB 中,一些日志数据存放于 MongoDB 中,而且 还能把 Oracle 的表跟 MySQL 的表做关联查询,你是否有一种不能呼吸的感觉?而未来,还能通过 Mycat 自动 将一些计算分析后的数据灌入到 Hadoop 中,并能用 Mycat+Storm/Spark Stream 引擎做大规模数据分析,看 到这里,你大概明白了,Mycat 是什么?Mycat 就是 BigSQL,Big Data On SQL Database。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值