分布式数据库与cobar

2016-09-18  本文已影响183人  cpu_driver

@季文飞整理
2016.9.18


Mysql集群

1.相关的概念

merge分表

分表就是把N条记录的表,分成若干个分表,各个分表记录的总和仍为N。merge是mysql的一种存储引擎,它把一组MyISAM数据表当做一个逻辑单元.
CREATE TABLEt(idint(10) unsigned NOT NULL ,datavarchar(45) NOT NULL, PRIMARY KEY (id) ) ENGINE=MERGE UNION=(t1, t2) INSERT_METHOD=LAST;


其中ENGINE=MERGE表示,使用merge引擎。另外ENGINE=MRG_MyISAM是一样的意思。
UNION=(t1, t2)表示,挂接了t1,t2表
INSERT_METHOD=LAST表示,插入方式。0 不允许插入,FIRST 插入到UNION中的第一个表,LAST 插入到UNION中的最后一个表.

分区

通俗地讲表分区是将一大表,根据条件分割成若干个小表。mysql5.1开始支持数据表分区了。如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区。当然也可根据其他的条件分区。
分区的一些优点包括:
1)、与单个磁盘或文件系统分区相比,可以存储更多的数据。
2)、对于那些已经失去保存意义的数据,通常可以通过删除与那些数据有关的分区,很容易地删除那些数据。相反地,在某些情况下,添加新数据的过程又可以通过为那些新数据专门增加一个新的分区,来很方便地实现。通常和分区有关的其他优点包括下面列出的这些。MySQL分区中的这些功能目前还没有实现,但是在我们的优先级列表中,具有高的优先级;我们希望在5.1的生产版本中,能包括这些功能。
3)、一些查询可以得到极大的优化,这主要是借助于满足一个给定WHERE语句的数据可以只保存在一个或多个分区内,这样在查找时就不用查找其他剩余的分区。因为分区可以在创建了分区表后进行修改,所以在第一次配置分区方案时还不曾这么做时,可以重新组织数据,来提高那些常用查询的效率。
4)、涉及到例如SUM()和COUNT()这样聚合函数的查询,可以很容易地进行并行处理。这种查询的一个简单例子如 “SELECT salesperson_id, COUNT (orders) as order_total FROM sales GROUP BY salesperson_id;”。通过“并行”,这意味着该查询可以在每个分区上同时进行,最终结果只需通过总计所有分区得到的结果。
5)、通过跨多个磁盘来分散数据查询,来获得更大的查询吞吐量。
分区的类型有:Range,Hash ,List , Key 。关于类型的区别可以阅读:https://my.oschina.net/ydsakyclguozi/blog/393583
Sql语句例如:
create table teacher (id varchar(20) not null , name varchar(20), age varchar(20), birthdate date not null, salary int ) partition by range(year(birthdate)) ( partition p1 values less than (1970), partition p2 values less than (1990), partition p3 values less than maxvalue );
对于CRUD,无需关心分区

Cluster-Galera Cluster

简单集群示意图:

集群的目的:

Galera Cluster是一款比较不错的mysql集群框架,其架构如图

Galera Cluster的特点是:

A 没有传统意义上的主从节点,可以在任意节点上进行读写
B 客户端连接跟操作单台MySQL数据库的体验一致
C 自动剔除故障节点
D 同步复制
E 真正行级别的并发复制

Galera Cluster的缺点:

由于同一个事务需要在集群的多台机器上执行,因此网络传输及并发执行会导致性能上有一定的消耗。所有机器上都存储着相同的数据,全冗余。若一台机器既作为主服务器,又作为备份服务器,出现乐观锁导致rollback的概率会增大,编写程序时要小心。不支持的SQL:LOCK / UNLOCK TABLES / GET_LOCK(), RELEASE_LOCK()…不支持XA Transaction

分布式数据存储

1.相关概念

分布式数据库

CAP理论

当数据存储被复制(也称为分隔(partitioned))时,系统的状态被分散。这意味着我们离开了舒适的ACID领域,进入CAP的美丽新世界。CAP理论是由加州伯克利分校的Eric Brewer博士在2000年提出的。它最简单的形式是这样的:一个分布式系统必须在一致性、可用性和分隔容忍度(Partition Tolerance)之间取舍,并且只能做到三者中的两者。

数据分片

数据分片,即把数据按照一定的规则切分到不同的数据库。基本分片方法有:

Cobar使用

1.运行原理

从本质上来说,cobar是用来方便程序员调用而设计类似jdbc的功能的一款mysql分布式数据库连接管理插件。

2.Cobar注意事项

  • a.不支持跨库情况下的join、分页、排序、子查询操作。

3. example

上一篇下一篇

猜你喜欢

热点阅读