Tag Archives | database

阿里云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分的原理。

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

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

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

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

阅读全文

Tags: , , , , ,

Comments { 0 }

从Search Sort到Join

发表于《程序员》2015年4月B的一篇文章,在博客归档下。根据杂志社要求,在自己博客发表该文章亦须注明:本文为CSDN编译整理,未经允许不得转载,如需转载请联系market#csdn.net(#换成@)

想通过原理来说明一些技术白皮书上“什么时候应该使用什么”这个“应该”后面的原因。通过数据结构中经典的排序查找算法来推倒解释数据库中几种经典的表连接背后的算法原理,和原理决定的在各种数据库中不同的应用和限制。以简单的算法来讲出数据库系统中看着核心强大功能的本质的算法设计。较之白皮书中不同数据库的不同描述,尽量去除差异,通过原理来描述功能,做到深入浅出。

一、前言

Join的语义是把两张表的通过属性的关联条件值组合在一起,一般意义上数据库范式越高,表被拆分的越多,应用中要被Join的表可能会越多。在我们日常开发中几乎找不到不涉及Join的SQL语句,哪怕未显示包含Join这个关键字。[......]

阅读全文

Tags: , , , , , ,

Comments { 0 }

oracle分页技术性能比较

一、前言

在一个有30亿条数据的大表上分页,为了对方案进行性能测试,先忽略其他条件查询的影响,单看下分页部分的性能,顺便考察说明下oraclerownum使用中一些比较tricky的地方。 实验条件: 表结构如下,内有2千万条实验数据。 table-columns

二、实验

提供7种不同方式(其实是5种,二和四是一种、三和五是一种)方式的 。第一种只是为了demo一下假设的一种错误逻辑方式,第二种和第四种是一种逻辑正确,但是性能极差的方式。筛选下来看上去性能可行的方式是第五、第六、第七方式。 这里仅仅记录没中方式的执行结果和计划。

方式1

笨笨的想想。Oracle里面不是有个变量叫rownum,顾名思义,就是行号的意思,我要获取第十行到第二十行的数据,sql写起来很精练!比myslqlimitmssqltop折腾看着还要优雅!

[......]

阅读全文

Tags: ,

Comments { 0 }