Archive | 八月, 2015

阿里云DRDS使用Q&A

归档下DRDS使用过程中的Q&A,感谢提供支持的DRDS研发团队的几位。

Q:考虑到日志中时间作为关键字段,在分区的时候除了考虑写时候的均衡以外还要考虑读时候尽可能的能用到分区裁剪。权衡后决定,使用日志时间和区域(根据日志中源IP映射得到)。即可用理解成根据日志中源IP进行适当写时候的均衡,在读数据的时候这两个字段一般也被认为是业务的重要字段,查询的时候会进行裁剪。潜在的问题是,如果用户只选择了时间段,未选择区域,这样可能会跨分区查询,不知道性能衰减会到什么程度,这在第四个问题中也有涉及。

A:?采用双维度(业务字段 + 时间)切分是 DRDS 的推荐方案,通常建议按业务字段(IP)分库,按时间字段分表。正如问题里说的,这个方案可以保证写入请求均衡到不同的服务器上;对查询,如果条件中包含了业务字段(IP),那查询会自动路由到单库上,达到最好的性能。如果查询未包含业务字段[......]

阅读全文

Tags: , , ,

Comments { 0 }

阿里云DRDS的平滑扩容的局限

drds虽然看上去和hbase等一样宣称,可以方便的地scale out,当发现集群里的数据不够存了,加几个实例进来即可。Hbase是要加region server(其实也是加Hadoop的DataNode),DRDS是要加RDS实例,也就是mysql的数据库实例。但实际使用中发现DRDS的平滑扩容并不是原来想象的那样有若干新实例加进来,数据会自动(或者人工干预后)在所有的数据节点间比较均匀的再分配。

平滑扩容

原因就是DRDS的分库策略。在DRDS的使用中可以看出,drds建分库时,不用指定目标分库数,但是分库函数会自动把分库列上的取值映射成指定个数的分库。这个指定个数就是rds实例数*8。

这就是该表的分库策略,创建表后,不能修改。

后面平滑扩容的时候,再有rds实例加进来,只会把原有rds实例上的分库选择性的剪切到新的加入的rds上。Drds总的分库数也不会增加。?[......]

阅读全文

Tags: , , , , ,

Comments { 0 }

阿里云 DRDS 使用和理解

记录第一天使用DRDS的操作,通过应用、应用中的细节和约束来试图理解、猜想DRDS的实现和原理。

DRDS上创建逻辑库

第一步,选择要加入的RDS

1 drds_add_rds

 

第二步,数据库的基本信息:库名前缀:Idouba ?密码:douba_123。拆分模式,表示创建一个可以分库

2 drds_basic_info

第三步,观察自动为刚才输入的逻辑库创建出若干个物理库,两个输入的RDS实例上各有8个物理库。能猜到,我们在逻辑库上的数据会以一定的方式最终存储在这些物理库上。每个物理库的前缀都是我们前面输入的idouba

2_drds_partitioned_rds

第四步,开始创建。即将刚才规划的建库命令在两个实例上执行。我们自己也能猜到这些命令最终在mysql实例上是怎么做的。

4_drds_create_database

可以看到创建库的基本信息如下:

5_drds_logic_database_info

使用上和我们这个逻辑库和其他的mysql实例没有任何差别。可以看到使用上,至少是对外提供的使[......]

阅读全文

Tags: , , ,

Comments { 1 }

阿里云DRDS的“分”之道

从使用者的角度理解DRDS分的原理。

项目业务需要,将一个数据量较大的产品搬到阿里云上去。数据存储的选择,通过比较OTS、OCS等产品的比较,最终选择了DRDS。

关于DRDS的介绍,在这里官方文档:分布式关系型数据库服务DRDS中有详细完整的说明,其实只能说是比较详细,比较完整吧,很多东西还是需要在使用中摸索。文章中只是简单记录下主要的使用过程和自己使用中对DRDS的一点理解。

开始需要明确下DRDS和RDS这两个产品的关系。

DRDS是分布式关系型数据库服务(Distribute Relational Database Service)是一种水平拆分、可平滑扩缩容、读写分离的在线分布式数据库服务。RDS是号称云数据库,其实就是一个Relational Database Service,能兼容MySQL,SQLServer,PostgreSQ协议的关系型数据库服务[......]

阅读全文

Tags: , , , , ,

Comments { 0 }