Mycat (一)

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

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

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

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

官网给出的下载地址:

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

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

需求:

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

难点:

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

思路:

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

分库分表的形式有两种:

※ 垂直分割

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

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

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

※ 水平分割

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

缺点:数据表暴增

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


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

你可能感兴趣的:(Mycat (一))