




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库中间件架构设计和实现 技术中心架构部 罗立树 关于我关于我 ? 易宝支付核心开发 ? 阿里巴巴商品线(内部统称Offer,基于 Cobar)服务化落地负责人,中文站开放平 台负责人 ? 京东网站交易部架构师 ? 百度高级开发工程师,负责LBS地图商户中 心架构和团购架构方面的工作 Contents Contents 基础知识介绍 开发中间件的目的 实现方案解析 架构设计和实现细节 中间件的未来规划 5分钟完成分库分表 如何接入使用 一些概念一些概念 ?读写分离? ?HA(高可用性)? ?分库分表? ?事务和分布式事务? ?数据一致性? 数据库性能关键点?数据库性能关键点? 索引 IO、数
2、据 量、算法 CPU、内 存 其他 锁 线程 存储 CAP理论理论 Consistency Availability Partition- tolerance 带着疑问思考带着疑问思考 ? 假如你来设计一套中间件你会怎么设计? ? 你认知的数据库中间件都有哪些?他们相 对于我们的解决方案都有哪些优点? ? Contents Contents 基础知识介绍 开发中间件的目的 实现方案解析 架构设计和实现细节 中间件的未来规划 5分钟完成分库分表 如何接入使用 现状现状 中间件解决的问题中间件解决的问题 ? 简化开发,降低分库分表复杂度 ? 分库分表透明化 ? 统一配置管理 ? 提供监控 ? 链接
3、管理 ? HA支持 ? LoadBlance支持 ? 提供更好的扩展能力 中间件解决的问题中间件解决的问题 Contents Contents 基础知识介绍 开发中间件的目的 实现方案解析 架构设计和实现细节 中间件的未来规划 5分钟完成分库分表 如何接入使用 实现方式实现方式 ? 应用硬编码实现 ? DAL封装(或者ORM封装) ? JDBC ? 基于Mysql客户端协议 基于客户端的访问模式基于客户端的访问模式 Mysql协议访问模式协议访问模式 实现方式比较实现方式比较 比较项 DAL方式 ORM方式 JDBC客户端方式 mysql协议方式 实现难度 低 中 高 较高 应用代码复杂度 高
4、 无 无 无 性能 高 高 高 中 透明性支持 糟糕 良好 良好 很好 运维健壮性 很好 很好 很好 较弱 部署结构复杂度 轻量级 轻量级 轻量级 较重 耦合问题 和业务代码耦 合 和框架耦合 和jdbc版本耦合 和mysql客户端交互协议版本耦合,数据库 并行Query支持 ? 支持写入,更新,查询到多个库和表的同 一线程操作 事务支持事务支持 ? 支持单库事务 ? 不支持分布式事务(简单支持) 结果合并结果合并 ? 单库单表查询的不需要合并 ? 不带分库分分表字段: 1. 聚集函数 2. group by 3. order by limit 4. having Join支持支持 ? 语句:
5、Select * from t_user u join t_city c on u.city_id=c.id where user_id=luolishu ? 约束:不支持跨库join,被join的表要保证 所有数据一致性 嵌套查询嵌套查询 ? Select * from t_user where t_city_id in(select id from t_city where country=china) 嵌套查询-约束 ? 约束:不支持跨库,被子查询的表要保证 所有数据一致性 聚集函数聚集函数 ? Select min(id),max(age),avg(age),sum(age),coun
6、t(age) from t_user; 聚集函数-解析 id age name 1 12 chen 3 15 li 5 17 huang 7 22 huang id age name 2 16 zhang 4 19 liu 6 32 chen 8 66 huang 1 22 ? 66 4 2 66 ? 133 4 1 66 24.8750 199 8 merge Avg(age)=sum(age)/count(age) SELECT MIN(id), MAX(age), AVG(age), SUM(age), COUNT(age) FROM t_user1 SELECT MIN(id), MA
7、X(age), AVG(age), SUM(age), COUNT(age) FROM t_user2 聚集函数-使用约束 ? 目前仅仅支持min,max,avg,count,sum ? Group by中用到聚集函数,需要在结果中出 现(今后可以考虑自动补全) Group by 语句:Select min(id),max(age),avg(age),sum(age),count(age), name from t_user Group by name; Group by-解析解析 id age name 1 12 chen 3 15 li 5 17 huang 7 22 huang id a
8、ge name 2 16 zhang 4 19 liu 6 32 chen 8 66 huang 1 12 ? 12 1 chen 5 22 ? 39 2 huang 3 15 ? 15 1 li 6 32 ? 32 1 chen 8 66 ? 66 1 huang 4 19 ? 19 1 liu 2 16 ? 16 1 zhang 1 32 22 44 2 chen 5 66 35 105 3 huang 3 15 15 15 1 li 4 19 19 19 1 liu 2 16 16 16 1 zhang merge Group by-使用约束使用约束 group by字段需要出现在结果集
9、里 DISTINCT Distinct=group by 所有result column Order by ? Select min(id) as min,max(age),avg(age),sum(age),count(age), name from t_user Group by name Order by min; Order by-解析解析 id age name 1 12 chen 3 15 li 5 17 huang 7 22 huang id age name 2 16 zhang 4 19 liu 6 32 chen 8 66 huang 1 12 chen 3 15 li 5
10、 17 huang 7 22 huang 1 12 chen 3 15 li 2 16 zhang 5 17 huang 4 19 liu 7 22 huang 6 32 chen 8 66 huang merge 2 16 zhang 4 19 liu 6 32 chen 8 66 huang Group by 语句:Select min(id),max(age),avg(age),sum(age),count(age), name from t_user Group by name Order by name Limit 5 Group by,Order by,limit-解析解析 id
11、age name 1 12 chen 3 15 li 5 17 huang 7 22 huang id age name 2 16 zhang 4 19 liu 6 32 chen 8 66 huang 1 12 12 12 1 chen 5 22 19.5 39 2 huang 3 15 15 15 1 li 6 32 32 32 1 chen 8 66 66 66 1 huang 4 19 19 19 1 liu 1 32 22 44 2 chen 5 66 35 105 3 huang 3 15 15 15 1 li merge Limitoffset ? Select min(id)
12、as min,max(age),avg(age),sum(age),count(age), username from t_user Group by username Order by min limit 10 offset 100; Limitoffset使用建议使用建议 ? 避免往后翻页比较多的查询 ? 涉及到翻页需求,可以考虑走外部索引 (search、cache或者索引表等) Having ? Select avg(age) ,name from t_user having avg(age) 30 约束条件: having中的条件字段必须要出现在结果集中 Group by,Order
13、 by,limit-解析解析 id age name 1 12 chen 3 15 li 5 17 huang 7 22 huang id age name 2 16 zhang 4 19 liu 6 32 chen 8 66 huang ? chen 1 12 ? huang 2 39 ? li 1 15 32 chen 1 32 66 huang 1 66 19 liu 1 19 16 zhang 1 16 35 huang merge Select avg(age) ,name from t_user1 group by name Select avg(age) ,name from t
14、_user2 group by name 22 chen 2 44 35 huang 3 105 15 li 1 15 19 liu 1 19 16 zhang 1 16 having 使用约束总结使用约束总结 ? 避免join ? 避免子查询 ? 避免跨库 ? 不使用分布式事务,尽量强调最终一致性 ? 分页不要取offset较大的值 ? Group,order by,having等条件必须要出现 在结果集里 Contents Contents 基础知识介绍 开发中间件的目的 实现方案解析 架构设计和实现细节 中间件的未来规划 5分钟完成分库分表 如何接入使用 GO语言语言+Mysql C+
15、lib 数据层访问虚拟化数据层访问虚拟化 ? 支持redis,mongodb,文件等存储方式 Contents Contents 基础知识介绍 开发中间件的目的 实现方案解析 架构设计和实现细节 中间件的未来规划 5分钟完成分库分表 如何接入使用 5分钟完成分库分表分钟完成分库分表 Contents Contents 基础知识介绍 开发中间件的目的 实现方案解析 架构设计和实现细节 中间件的未来规划 5分钟完成分库分表 如何接入使用 Maven依赖依赖 com.bj58 oceanus-client 0.0.1-SNAPSHOT 接入方式接入方式 ? 公司内部组件:core、dao ? 基于d
16、atasource标准 修改DAO依赖版本 com.bj58.spat com.bj58.spat.dao 2.0.0-SNAPSHOT 修改Core依赖版本 com.bj58.spat com.bj58.spat.core 2.0.3-SNAPSHOT 修改修改datasource ? DataSource dataSource=new DataSourceWrapper(ds); 配置项配置项 ? ? ? ? ? 配置配置 ? 属性: id唯一标识 classbean的实现类 配置示例配置示例 配置配置 ? 属性: id线程池唯一标识 size线程池大小 配置示例配置示例 默认线程 池,可
17、以不配 指明线程池 配置配置 ? 属性: id唯一属性标识 slaves从属节点 parent父ID 子属性采用名字标识当做key 配置示例配置示例 root 123456 com.mysql.jdbc.Driver 5 20 6000 3 配置示例继承 配置配置 ? 属性: id唯一标识 loadbalance负载均衡策略 配置示例配置示例 root 123456 com.mysql.jdbc.Driver 5 60000 150 配置配置 ? 属性: name:抽象出的数据库表 differ-name:是否生成表名 threadpool:指定线程池 columns:分库分表字段 配置示例配置示例1 if($ID=1|$ID=3|$ID=5|$ID=7) return 0; else return 1; 分库分表策略实现,这里采用javascript的方式返回 namenode的下标,下标从0开
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 快速成形加工机床企业数字化转型与智慧升级战略研究报告
- 聚氟乙烯(PVF)企业ESG实践与创新战略研究报告
- 可磨耗封严涂层材料企业县域市场拓展与下沉战略研究报告
- 羽绒四厢分毛机企业ESG实践与创新战略研究报告
- 货物运输代理服务企业ESG实践与创新战略研究报告
- 电动理发工具零件企业县域市场拓展与下沉战略研究报告
- 2025-2030中国未塑化的聚氯乙烯(UPVC)窗户行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国手持式电钻行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国复合型种衣剂行业市场发展趋势与前景展望战略研究报告
- 环保工程项目可行性研究报告范文
- 2025年华侨港澳台学生联招考试英语试卷试题(含答案详解)
- 《恙虫病正式》课件
- 云辐射效应研究-洞察分析
- 2025中国海油春季校园招聘笔试高频重点提升(共500题)附带答案详解
- 微通道内纳米流体传热流动特性
- 卫生院乡村医保培训课件
- 微阵列技术在肿瘤标志物研究-洞察分析
- 2024至2030年中国气力输送系统行业投资前景及策略咨询研究报告
- 四川省乐山市(2024年-2025年小学六年级语文)部编版期末考试((上下)学期)试卷及答案
- 2025届徐州市高考英语二模试卷含解析
- 初中数学52个经典母题
评论
0/150
提交评论