mycat

存储-海量数据-(持续数据的增长和高并发解决方案)

你离开我真会死。 提交于 2019-12-04 00:20:05
目标 Ø 掌握数据库的大数据处理方案和HA Ø 掌握为什么需要数据库中间件,何为数据库中间件 Ø 掌握不同场景所需的数据库中间件特性 Ø 掌握数据库中间件设计要点 海量数据分片之分库分表 大数据处理-回顾分区 应对大数据的处理,在分库分表之前,我们可以用分区,提升数据库的性能 大数据处理-分片理解 随着业务的发展,业务越来越复杂,应用的模块越来越多,总的数据量很大,高并发读写操作均超过单个 数据库服务器的处理能力怎么办? 数据分片指按照某个维度将存放在单一数据库中的数据分散地存放至多个数据库或表中 数据分片的有效手段是对关系型数据库进行分库和分表 分库又叫垂直拆分,或者纵向拆分,指的是按照业务模块将数据分散到不同的数据库服务器 就是把原本存储于一个库的表拆分存储到多个库上,通常是将表按照功能模块、关系密切程度划分出来, 部署到不同的库上。 如果数据库是因为表太多而造成海量数据,并且项目的各项业务逻辑划分清晰、低耦合,那么规则简单明 了、容易实施的首选就是分库。 大数据处理-分库图例 优点: Ø 拆分后业务清晰,拆分规则明确; Ø 系统之间整合或扩展容易; Ø 数据维护简单。 缺点: Ø 部分业务表无法join,只能通过接口方式解决,提高了系统复杂度; Ø 受每种业务不同的限制存在单库性能瓶颈,不易数据扩展跟性能提高; Ø 事务处理复杂。 大数据处理-分表理解

爱可生开源社区官网正式发布啦!

半腔热情 提交于 2019-12-03 08:52:28
近期大事记 2018/12/31 DBLE年度报告发版 2019/01/07 DBLE 2.18.12.0 新版发布,修复 issue 60+ 2019/01/09 DBLE 2.18.12.0 Release Notes 详细解读 2019/01/15 DBLE Logo 首发 + DBLE 团队迎来史上第一张合照 1 月 18 日 ,爱可生开源社区官网正式发布,为了更好的聚合社区力量,我们开辟了开源社区官网及「爱可生开源社区」公众号作为开源系列产品的官方发布渠道。 2019开源社区小目标 7 7天 ,社区团队坚持每周推送至少一片高质量技术文章。 25 25场 ,2019年我们规划了至少25场社区活动,会去到全国各地与社区同学见面交流。 30 30天 ,研发团队会努力做到每月发布新版。 10.24 10月24日 ,每年开源一款新产品。 爱可生开源社区官网 链接: https://opensource.actionsky.com 入口:“阅读原文”直达 / DBLE Github 跳转 问题反馈: 官方社区交流(669663113) 官网的正确打开方式 关于文档 已有内容 :DBLE 使用文档 后续扩充 :DBLE 系列公开课视频 每次发布新版我们都会及时更新文档,同时,我们也在进行 DBLE 系列公开课视频准备,将 DBLE

MyCat - 使用篇(7)

匿名 (未验证) 提交于 2019-12-03 00:22:01
数据库路由中间件MyCat - 生产进阶篇(1) 1. MyCat求稳首要原则: 还是用之前的例子: 1.1 事务 : 首先,我们可以这么理解,MyCat只应该做两件事:请求转发与结果合并。源代码篇讲过MyCat的分布式事务的弱XA原理(其实根本不算是分布式事务),这是不可靠的,我们要想稳定的高可信的利用MyCat,就要避免一切分布式事务。 从现在开始,MyCat的所有图例为了演示方便将采用以下规则: 1.某一表同一分片多记录的插入和更新多次的事务是允许的: 对于分片表的事务,如果只包含单一分片列id,则事务只会被发送到一个真实数据库上执行。不涉及到分布式事务。 2.只涉及到同种分片规则并相同分布的表(其实就是父子表,就算你不用childtable标签,分布和分片规则都相同的表和父子表也是等价的)的同一条对应记录的插入和更新多次的事务是允许的! 多条记录更新:不允许这么做! 3.其他类型的,例如涉及到同一表不同分片的插入更新事务,或者涉及到不同分布分片的表的插入更新事务,都是不允许的。 4. 公共表的更新是不允许的,最好交由DBA去每一个分片上更新,保证一致性。 1.2 查询: 再次强调,MyCat只应该做两件事:请求转发与结果合并。 但是,在结果合并时,我们要考虑到JVM的内存限制,不能返回结果过大

MyCat - 使用篇(3)

匿名 (未验证) 提交于 2019-12-03 00:22:01
数据库路由中间件MyCat - 使用篇(3) 全局序列号 数据切分后,原有的关系数据库中的主键约束在分布式条件下将无法使用,因此需要引入外部机制保证数据唯一性标识,这种保证全局性的数据唯一标识的机制就是全局序列号(sequence)。 1. 本地文件方式 classpath下有一个sequence_conf.properties文件: GLOBAL_SEQ .HISIDS = GLOBAL_SEQ .MINID = 1001 GLOBAL_SEQ .MAXID = 1000000000 GLOBAL_SEQ .CURID = 1000 1 2 3 4 HISIDS表示历史使用过的值,MINID为ID最小值,MAXID为ID最大值,CURID为当前值。 需要在server.xml加入如下配置: < system > < property name = "sequnceHandlerType" > 0 </ property > </ system > 1 sequnceHandlerType 需要配置为 0,表示使用本地文件配置。 使用示例: insert into table1(id,name) values ( next value for MYCATSEQ_GLOBAL,‘test’); 1 但是这么做,MyCat就不是无状态中间件,很难去做MyCat集群。而且

Mycat 数据库分库分表中间件

匿名 (未验证) 提交于 2019-12-03 00:19:01
国内最活跃的、性能最好的开源数据库中间件! 我们致力于开发高性能的开源中间件而努力! 支持SQL92标准 支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常见SQL语法 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。 基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster 基于Nio实现,有效管理线程,解决高并发问题。 支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。 支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。 支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。 支持多租户方案。 支持分布式事务(弱xa)。 支持XA分布式事务(1.6.5)。 支持全局序列号,解决分布式下的主键生成问题。 分片规则丰富,插件化开发,易于扩展。 强大的web,命令行监控。 支持前端作为MySQL通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。 支持密码加密 支持服务降级 支持IP白名单 支持SQL黑名单、sql注入攻击拦截

分布式数据库中间件对比

匿名 (未验证) 提交于 2019-12-03 00:02:01
原文出自: https://blog.csdn.net/jornada_/article/details/82947677 一般对于业务记录类随时间会不断增加的数据,当数据量增加到一定量(一般认为整型值为主的表达到千万级,字符串为主的表达到五百万)的时候,性能将遇到瓶颈,同时调整表结构也会变得非常困难。为了避免生产遇到这样的问题,在做系统设计时需要预估可能产生的数据量:预估记录主体个数*预估记录主体产生的记录数(e.g.用户订单表预估数据量=预估用户数*单用户产生订单数),预估达到一定量时,就不得不考虑分库分表了,目前国内比较成熟的开源数据库中间件有sharding-jdbc、mycat;而drds是阿里云最近推出的商业产品,考虑到大部分公司都在使用阿里云,做一个全家桶,也是一个不错的选择。接下来将对这三款产品的优缺点及适用场景做以介绍。 可以看出sharding-jdbc作为一个组件集成在应用内,而mycat则作为一个独立的应用需要单独部署,drds则是阿里云的一个独立产品,不过需要结合rds一起使用。从架构上看sharding-jdbc更符合分布式架构的设计,直连数据库,没有中间应用,理论性能是最高的(实际性能需要结合具体的代码实现,理论性能可以理解为上限,通过不断优化代码实现,逐渐接近理论性能)。同时缺点也很明显,由于作为组件存在,需要集成在应用内,意味着作为使用方

一、mycat介绍

匿名 (未验证) 提交于 2019-12-02 23:59:01
一、背景 随着时间和业务的发展,数据库中的数据量增长是不可控的,库和表中的数据会越来越大,随之带来的是更高的磁盘、IO、系统开销,甚至性能上的瓶颈,而一台服务的资源终究是有限的,因此需要对数据库和表进行拆分,从而更好的提供数据服务。 当用户表达到千万级别,在做很多操作的时候都会很吃力,所以当数据增长到1000万以上就需要分库分表来缓解单库(表)的压力。 二、mycat原理 可以用拦截形容,它拦截了用户发送过来的SQL语句,首先对sql语句做了一些特定的分析,如分片分析,路由分析,读写分析,读写分离分析,缓存分析等,然后将此sql发送后端的真是数据库,并将反馈的结果做适当的处理,最终返回给用户 三、mycat介绍 四、什么是分库分表 简单来说,就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。 数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式。一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切可以称之为数据的垂直(纵向)切分;另外一种则是根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库(主机)上面,这种切分称之为数 据的水平(横向)切分。 垂直切分的最大特点就是规则简单,实施也更为方便,尤其适合各业务之间的耦合度非常低,相互影响很小

Mycat的简单配置

匿名 (未验证) 提交于 2019-12-02 23:42:01
Mycat使用起来是非常方便,而且最重要的是配置简单,稍显麻烦的就是需要对库中的每一个表都进行配置。 记录一下最重要的几点: 1,server.xml配置逻辑库以及Mycat的账户密码,权限控制。 2,schema.xml配置Mycat对应的Mysql分片。****最重要的就是这里的配置 3,rule.xml可以定义分片规则。可以自定义。 4,wrapper.xml 配置一些启动参数。

Mycat个人心得笔记(四)

匿名 (未验证) 提交于 2019-12-02 23:38:02
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LiuY521/article/details/90753979 Ŀ¼ 一.Mycat的介绍 1.为什么要用Mycat呢? 2.MyCat的目标是 3.同类产品和运行原理 1.运行原理 2.同类产品 3.假死现象 二.Mycat安装 https://blog.csdn.net/LiuY521/article/details/90754711 一.Mycat的介绍 中国第一开源数据库分布式中间件, 特点 实现高性能的读写分离 实现水平分片计算 100亿大表数据; 数据的输入输出整合 1.为什么要用Mycat呢? 如图所示,之前做了个Easymall项目,上篇博客写了一个双机热备,读写分离,那么如何让项目实现,写的时候连接主节点,读取的时候,使用从节点呢?通过代码其实也可以实现,但是要写的代码量过于庞大,那么为什么不使用,工具呢?能做车,为什么步行呢,数据库集群交给Mycat来管理 2.MyCat的目标是 低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。 3.同类产品和运行原理 1.运行原理 代理客户端拦截前端客户端发送的sql 计算读写分离,计算分片,整理最终的sql 将结果从数据库返回给前端客户端使用