MyCat数据库中间件 - 分库

MyCat

  MyCat用于解耦分布式数据库与java,比如分库分表以后,需要查询某条数据时,需要java根据需要查的数据先计算去哪个库查,然而有了Mycat就不用自己计算怎么存储,怎么查询了。MyCat把物理上分开的数据库,看成逻辑上只有一个库。java只需要针对MyCat编码即可。数据库中间件就是位于java和数据中间位置的代码,中间层是一种艺术手法,在计算机中很多地方都有用到,例如java实现跨平台,采用中间层JVM。

  MyCat的前身是阿里的cobar.

能做什么?

  1、读写分离(前提主从复制)

  2、数据分片(垂直拆分:根据业务把不同表拆到不同库、    水平拆分:把同一表拆到不同库、   垂直+水平拆分)

  3、多数据源整合

原理:拦截。拦截sql,分析sql,转发sql到指定数据库。

MyCat分库:先准备空白库,例如两个主机上两个空白的order库,然后配置mycat的schema.xml,设置哪个表位于哪个库,最后启动mycat,在mycat上执行建表语句,响应的表会自动根据规则到指定的库创建。

举例:有四张表,要求customer进入linux上的库,其余三个在windos上的库。

#客户表 rows:20万
CREATE TABLE customer(
id INT AUTO_INCREMENT,
NAME VARCHAR(200),
PRIMARY KEY(id)
);

#订单表 rows:600万
CREATE TABLE orders(
id INT AUTO_INCREMENT,
order_type INT,
customer_id INT,
amount DECIMAL(10,2),
PRIMARY KEY(id)
);

#订单详细表 rows:600万
CREATE TABLE orders_detail(
id INT AUTO_INCREMENT,
detail VARCHAR(2000),
order_id INT,
PRIMARY KEY(id)
);

#订单状态字典表 rows:20
CREATE TABLE dict_order_type(
id INT AUTO_INCREMENT,
order_type VARCHAR(200),
PRIMARY KEY(id)
);

配置:cd /usr/local/mycat/conf

  vim shcema.xml

 

  然后,创建数据库;启动mycat,在mycat下执行建表语句。

  结果:

    

    windos下

    

为什么把customer分出去,原因就是下单需要登录系统,登录以后客户信息都存于session上,在获取时直接从session中获取。

优点:

1. 拆分后业务清晰,拆分规则明确。

2. 系统之间整合或扩展容易。

3. 数据维护简单。

缺点:

1. 部分业务表无法join,只能通过接口方式解决,提高了系统复杂度。

2. 受每种业务不同的限制存在单库性能瓶颈,不易数据扩展跟性能提高。

3. 事务处理复杂。

原文地址:https://www.cnblogs.com/xingrui/p/10313331.html

时间: 2024-10-29 16:23:39

MyCat数据库中间件 - 分库的相关文章

Mycat数据库中间件上手实践及分布式事务和读写分离实现

前言 现在微服务真是火得不行不行的, 最近开始找工作, 打开Boss直聘一看, 乖乖, 整页整页全是要求会整微服务的, 其中不乏很多小微企业, 搞得好像微服务就是万能的似的, 真不知道是中了谁的毒. 微服务肯定是个好东西, 优点很多, 百度一下一大把, 这里我们就不说了, 先讨论讨论微服务必然会带来几个问题. 通信问题, 微服务间是肯定需要通信的, 不能像以前一样调个方法搞定了. 分布式事务问题暨数据一致性问题, 微服务之间DB操作无法放在一个数据库事务中了. 维护问题, 微服务的维护难度必然是

mycat - 数据库中间件 学习记录4

mycat的配置 cacheservice.properties:路由缓存相关配置文件 index_to_charset.properties:字符集映射关系 rule.xml:分片规则 schema.xml:逻辑库定义 sequence_conf:sequence配置信息(一般用基于db,time两种) server.xml:mycat server配置参数,默认参数 wrapper.conf:JVM配置参数 zk-create.yaml:zk初始化参数 下图:server.xml 下图是sc

现代Java服务端开发核心技术之分布式数据库中间件MyCAT入门

现代Java服务端开发核心技术之分布式数据库中间件MyCAT入门 现代Java服务端开发核心技术 MyCAT系统环境搭建 如下列表展示了搭建MyCAT运行时环境所需要的软件及其版本说明. 软件名称 软件版本 os centos7.5 JDK JDK1.8u191 MySQL MySQL5.7 Mycat Mycat1.6.5 Navicat Navicat12.08 在非集群的环境下,MyCAT仅仅依赖JDK就可以良好的运行在Windows,Linux,macOS等操作系统之上. CentOS7

现代Java服务端开发核心技术之数据库中间件MyCAT入门

现代Java服务端开发核心技术之数据库中间件MyCAT入门 现代Java服务端开发核心技术 MyCAT系统环境搭建 如下列表展示了搭建MyCAT运行时环境所需要的软件及其版本说明. 软件名称 软件版本 os centos7.5 JDK JDK1.8u191 MySQL MySQL5.7 Mycat Mycat1.6.5 Navicat Navicat12.08 SecureCRT Linux客户端 在非集群的环境下,MyCAT仅仅依赖JDK就可以良好的运行在Windows,Linux,macOS

转:开源数据库中间件MyCat实现数据库读写分离、分表分库指南

系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一个广受好评的数据库中间件,已经在很多产品上进行使用了.希望通过这篇文章的介绍,能学会Mycat的使用. 安装 Mycat官网:http://www.mycat.io/可以了解下Mycat的背景和应用情况,这样使用起来比较有信心. Mycat下载地址:http://dl.mycat.io/官网有个文档

数据库中间件mycat简单入门

当在项目中mysql数据库成为瓶颈的时候,我们一般会使用主从复制,分库分表的方式来提高数据库的响应速度,比如mysql主从复制,在没有数据库中间件的情况下,我们只能由开发工程师在程序中控制,这对于一个在正在线上运行的项目来说,需要改动的代码量蛮大的,也不方便扩展,比如,我想再添加一台从机,下面进行mycat入门 一.部署步骤详解 (1) 用命令行工具或图形化客户端,连接MYSQL,创建DEMO所用三个分片数据库: CREATE database db1; CREATE database db2;

数据库(分库分表)中间件对比

转自:http://www.cnblogs.com/cangqiongbingchen/p/7094822.html 分区:对业务透明,分区只不过把存放数据的文件分成了许多小块,例如mysql中的一张表对应三个文件.MYD,MYI,frm. 根据一定的规则把数据文件(MYD)和索引文件(MYI)进行了分割,分区后的表呢,还是一张表.分区可以把表分到不同的硬盘上,但不能分配到不同服务器上. 优点:数据不存在多个副本,不必进行数据复制,性能更高. 缺点:分区策略必须经过充分考虑,避免多个分区之间的数

分库分表数据库中间件对比

(一)关键问题 1.读写分离 2.分库分表 3.类别 lib库 1)业务直接到数据库,少一层proxy效率更高 2)没有proxy的lvs的单点问题 proxy 1)统一管理所有到数据库的连接,连接复用 2)基础查询功能抽象,减少代码耦合 3)易于实现监控.数据迁移.连接管理等功能 (二)sharding-jdbc(开源,lib) 当当应用框架ddframe中,从关系型数据库模块dd-rdb中分离出来的数据库水平分片框架 功能 1)以jar包形式提供服务 2)分片灵活,支持等号.between.

MyCat:取代Cobar数据库中间件

什么是MyCAT?简单的说,MyCAT就是: 一个彻底开源的,面向企业应用开发的“大数据库集群” 支持事务.ACID.可以替代Mysql的加强版数据库 ? 一个可以视为“Mysql”集群的企业级数据库,用来替代昂贵的Oracle集群 ? 一个融合内存缓存技术.Nosql技术.HDFS大数据的新型SQL Server ? 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品 ? 一个新颖的数据库中间件产品. 目标 低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速