美文网首页
Mycat (一)

Mycat (一)

作者: clpz299 | 来源:发表于2018-06-25 01:43 被阅读0次

    Mycat是数据层与数据库之间的一个中间件。

    Mycat的前身是阿里的一个开源项目,Cobar。

    Cobar早前阿里没有继续更新和维护,后被一个民间组织捡起来重构,修复了一些BUG,新增了一些功能,同时不仅仅是支持Mysql。

    这个组织很有意思的是,他们的目标呢,是加入Apache。

    官网给出的下载地址:

    https://github.com/MyCATApache/Mycat-download-new

    而这个中间件能帮我们做什么呢?

    需求:

           在大量的数据面前,这些数据是不适合添加缓存查询的,且要保证数据完整,查询效率高。

    难点:

    Mysql实际上呢,它的性能方面还是比不上Oracle,而如果数据存在于百万条以上的话,特别是多表联查的时候,关系型数据库的查询速度会变得很慢,而有些特定的数据呢,是不希望放在缓存当中的,万一缓存丢失,数据也就丢失了,而这些数据的读写量也是非常之高的,所以这个时候呢,就希望数据库的性能呢,能更好一些。

    思路:

           我们不希望在查询数据的时候过慢,除了增加本身数据库的优化内容,而常做的一些工作就是分库分表。

    分库分表的形式有两种:

    ※ 垂直分割

    为不同的业务单独建库,就像一个服务用户的服务,它将所有与用户有关的数据放在一个库里。

    优点:将该业务的数据从一个库中抽出后单独作为一个库,不与其他数据关联,看起来明确一些吧。

    缺点:这也没有从根本上解决说数据量读写速度提升,且,如果要将该业务与其他业务的数据关联,需先从这个数据库中拿到数据后,再通过一些主键查询的操作,从而达到目的。

    ※ 水平分割

    有多个库,且每个库上都有相同的数据表,且这些数据表存储的数据是部分数据。

    缺点:数据表暴增

    优点:能基本上解决之前所说的数据量读写的速度问题,且它应该要具有一些拆分规则,拆分规则指定了每个库中每张表所能存储的最大数据量是多少,且它做数据读取时,应该是有对应的查询导向。

    Mycat这个中间件就用来帮我们做数据库的切分。

    相关文章

      网友评论

          本文标题:Mycat (一)

          本文链接:https://www.haomeiwen.com/subject/ktreyftx.html