logo资料库

阿里云DRDS简明教程-Ver1.04 PDF下载.pdf

第1页 / 共47页
第2页 / 共47页
第3页 / 共47页
第4页 / 共47页
第5页 / 共47页
第6页 / 共47页
第7页 / 共47页
第8页 / 共47页
资料共47页,剩余部分请下载后查看
DRDS 简明教程 Ver 1.04 DRDS 简明教程 Ver 1.04 版本 1.00 1.01 内容 创建 人员 日期 姜元东 2015-01-09 增 加 跨 库 及 单 姜元东 2015-01-12 库事务的代码 1.01 增加原理简介, 姜元东 2015-01-12 引 用 阿 里 长 源 的文档 1.02 增 加 示 意 图 及 姜元东 2015-01-13 更正乱码 1.03 增加 Druid 连接 姜元东 2015-01-19 池 demo , 增 加 FAQ 1.04 增加 druid 数据 姜元东 2015-03-03 源 从 配 置 文 件 中读取用户名、 密码的方式;增 加 对 数 据 源 进 行监控的配置 1
DRDS 简明教程 Ver 1.04 目 录 1. 原理简介................................................................................................5 1.1. 分库........................................................................................... 5 1.2. 拆分键....................................................................................... 6 1.3. 全表扫描................................................................................... 6 1.4. 单个字段分库分表................................................................... 6 1.5. 多个字段分库分表................................................................... 7 2. 前提......................................................................................................10 3. 数据库配置情况................................................................................. 10 3.1. RDS 实例.................................................................................. 10 3.2. DRDS 实例................................................................................ 11 3.3. DRDS 分库情况........................................................................ 11 3.4. 建表..........................................................................................11 3.5. 使用 mysql 命令行连接数据库.............................................12 3.6. 建立 java 工程连接数据库...................................................12 3.6.1. 使用 Eclipse 建立 maven 工程。.............................12 3.6.2. Pom 的配置.................................................................. 13 3.6.3. 主要的 java 代码.......................................................14 3.6.4. 执行结果截图.............................................................16 3.6.5. 单库事务成功及跨库事务失败演示.........................16 4. 其他 demo............................................................................................ 18 2
DRDS 简明教程 Ver 1.04 4.1. 使用 Druid 数据库连接池.....................................................18 4.1.1. pom 工程文件..............................................................18 4.1.2. applicationContext.xml.........................................21 4.1.3. App.java..................................................................... 26 4.1.4. JdbcTemplateTestItem.java...................................27 5. Druid 数据库连接池从配置文件中读取配置信息..........................28 5.1. 配置文件内容......................................................................... 28 5.2. 在 spring 中的配置...............................................................29 6. 在 web 工程中监控 Druid 数据源的状态.........................................29 6.1. 在 web.xml 中的配置............................................................29 6.2. web 工程在 tomcat 中启动后查看监控................................30 7. DRDS FAQ..............................................................................................31 7.1. 什么是小表广播?................................................................. 31 7.2. 什么是异构索引?................................................................. 31 7.3. DRDS 的记录数上限参考?....................................................32 7.4. 关于 DRDS 的开发,使用 Druid 做连接池...........................32 7.5. 关于使用 DRDS 统计分析的解决方案...................................32 7.6. 关于 DRDS 的数据安全问题...................................................33 7.7. 关于 DRDS 的并发连接数.......................................................33 7.8. DRDS 的切分原则是什么?....................................................34 7.9. XA 事务能不能支持(分布式事务如何处理)?................... 35 7.10. DRDS 是否支持分布式 join 以及复杂 SQL 如何支持?... 36 3
DRDS 简明教程 Ver 1.04 7.11. 什么是全局唯一 ID?..........................................................38 7.12. 什么是数据水平切分?.......................................................38 7.13. 什么是平滑扩容?...............................................................39 7.14. 详解全表扫描....................................................................... 39 7.15. DRDS 支持的 SQL 语法有哪些?..........................................41 7.16. DRDS 的 hint 支持................................................................ 43 7.16.1. 手工指定 SQL 语句的拆分键.................................43 7.16.2. 用待定参数(?)作为 Hint 参数........................44 7.17. 如何接入 DRDS?.................................................................. 44 7.18. 如何在 drds 中使用 sequence?..........................................46 适逢阿里云公测,DRDS 是阿里在 TDDL 组件上发展而来的分布式 数据库解决方案。 适用对象:熟悉 java JDBC 开发,maven, eclipse 的人员。 4
DRDS 简明教程 Ver 1.04 1. 原理简介 DRDS 访问示意图 1.1. 分库 分库分表在 DRDS 里面是一个很重要的概念。DRDS 在后端 将数据表水平拆分到后端的每个 RDS 数据库中,这些数据 库被称为分库,对应的表称为分表。 DRDS 由每个分库负责 每一份数据的读写操作,从而有效的分散了整体访问压力。 在系统扩容时,只需要水平增加分库的数量,并且迁移相关 数据,就可以提高 DRDS 系统的总体容量。 5
DRDS 简明教程 Ver 1.04 1.2. 拆分键 即分库/分表字段。 DRDS 根据拆分键的值将数据表水平拆分到后端 的每一个 RDS 分库里。换句话说,键值相同的数据,一定会位于同 一个 RDS 数据库里。DRDS 里的每一张分表都可以定义自己的拆分 键,拆分键可以是单个字段,也可以是多个字段的组合。 1.3. 全表扫描 复杂的 SQL 语句会分发到所有库上执行,并且在 DRDS 中进行比 较和合并。全表扫描相当消耗性能,应该在业务中尽量避免。 1.4. 单个字段分库分表 t_item 表的分布键是 sellerid. 1) 在 INSERT / REPLACE 语句中必须包含分库分表的字段 (拆分键)。例如: insert into t_item (product_id) values(11); 返回错误信息:Error Code: 3009. optimize error by insert not support muti tables。 insert into t_item (sellerid,product_id) values(1,11); 允许执行。 1 row(s) affected 6
DRDS 简明教程 Ver 1.04 2) SELECT / UPDATE/ DELETE 语句如果 WHERE 条件中没有 包含拆分键,会进行全表扫描。 但如果表本身没有设置 为允许全表扫描,则报错。 update t_item set product_id=77 where product_id=1 ; 返回错误信息:Error Code: 3009. sql contain no sharding column:[[sellerId]] , maybe you can set allowFullTableScan。 1.5. 多个字段分库分表 1) SELECT / UPDATE / DELETE 语句如果 WHERE 条件中没有包含拆分字段,或 者带的拆分字段不全,会进行全表扫描;SQL 必须包含全部拆分键,才会进 行路由计算。 举例:拆分键是 id + date. SELECT * FROM table WHERE id = 1 AND date > 3; 7
DRDS 简明教程 Ver 1.04 进行路由计算。 SELECT * FROM table WHERE id = 1; 需要进行全表扫描。 2) SELECT / UPDATE / DELETE 语句如果在 WHERE 条件中带有全部拆分字段, ——则拆分字段之间的逻辑关系一定是 AND, 不支持 OR; 对于同一个拆分 字段的条件组合,用 AND 或者 OR 都是支持的。 举例:拆分键是 id + date. SELECT * FROM table WHERE id = 1 AND date > ‘2014/1/30’; AND ——正确组合。 SELECT * FROM table WHERE id = 1 OR date > ‘2014/1/30’; OR ——错误组合。 SELECT * FROM table WHERE id > 1 AND date > ‘2014/1/30’ AND date < ‘2014/3/1’; AND ——正确组合。 8
分享到:
收藏