ArchSummit北京2015-《深度解析云数据库TiDB》-刘奇

ArchSummit北京2015-《深度解析云数据库TiDB》-刘奇

ID:8219204

大小:753.43 KB

页数:38页

时间:2018-03-10

ArchSummit北京2015-《深度解析云数据库TiDB》-刘奇_第1页
ArchSummit北京2015-《深度解析云数据库TiDB》-刘奇_第2页
ArchSummit北京2015-《深度解析云数据库TiDB》-刘奇_第3页
ArchSummit北京2015-《深度解析云数据库TiDB》-刘奇_第4页
ArchSummit北京2015-《深度解析云数据库TiDB》-刘奇_第5页
资源描述:

《ArchSummit北京2015-《深度解析云数据库TiDB》-刘奇》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、ArchSummit全球架构师峰会北京站2015《深度解析云数据库TiDB》liuqi@pingcap.com微博:@goroutine议程●关于MySQL的一些技术痛点●我们需要一个怎样的数据库?●技术实现●关于多租户的一些讨论●一些测试方法话题从哪里开始?Google能告诉我们什么MySQL君怎么了?逃离MySQL?MySQL君怎么了?●争论从未停止●选你所爱MySQL君怎么了?●不被巨头控制,垄断●不被绑架●自由MySQL君怎么了?●scale●schemalessMySQL君怎么了?●scale●fastMySQL君怎

2、么了?●数据库前面通常有缓存●Redis越来越流行●其它各种补充○HBase○Couchbase○…...别人家的够好吗?PG君怎么了?MongoDB君怎么了?WeNeedTransaction!先小结下:离开MySQL的原因:•水平扩容/缩容•分布式事务•容错•半同步转异步,数据一致性问题大家是怎么解决这些问题的?水平伸缩•NoSQL在这方面有很好的积累•HBase•Cassandra•MongoDB分布式事务•典型做法•两阶段提交(2PC)•Googlespanner(2PL+2PC)隔离级别•SI•可重复读•Writes

3、kew•updateseta=a+1•SSI•Externalconsistency容错•多副本(raft协议复制,N/2+1)•去中心化的事务冲突检测TiDB如何解决这些问题?受GoogleSpanner和GoogleF1启发重点支持:•水平扩容/缩容•分布式事务•隔离级别•异步schema变更•容错TiDB架构图TiDB可插拔存储引擎TiDB如何解决Scale问题?数据组织KV{Node[1…N]{region[1…X]}}TiDB如何解决Scale问题?内部分裂RegionXRegionYRegionZSplit1~10

4、1~56~10NodeATiDB如何解决Scale问题?迁移RegionYRegionZ1~56~10NodeANodeBTiDB如何解决分布式事务?client本地两阶段提交分布式client缓存KVclientTiDB分布式事务的优化•1PC(单个region内的事务)•比如更新一行•GroupcommitTiDB如何解决隔离级别?•SI+乐观锁•ExternalConsistency•全局的时钟服务•低延迟•相对HybridLogicalClocks的实现,见论文•TrueTimein(GoogleSpanner)TiD

5、B如何解决schema变更?参考GoogleF1架构图片来源:http://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/41376.pdfTiDB如何解决schema变更?假设需要:•从schemaS1变成schemaS2(在表R上添加索引I).•两个不同的机器M1andM2,•机器执行操作的顺序:•ServerM2:使用schemaS2,插入一行r到表R.由于S2包含索引I,serverM2添加索引对应的key–valu

6、e.•ServerM1,使用schemaS1,deletesr.然而S1并不包含索引,所以M1删除行r的时候没有删除索引•索引对应的kv就残留下来了,此时如果有依赖索引的SQL就出错了TiDB如何解决schema变更?状态机图片来源:http://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/41376.pdfTiDB如何解决schema变更?图片来源:http://static.googleusercontent.com/

7、media/research.google.com/zh-CN//pubs/archive/41376.pdfTiDB如何解决schema变更?添加索引的状态迁移过程deleteonly→writeonly→backfill→public多租户问题?•做到哪一层?•SQL?•KV?•怎么隔离?•隔离到什么程度?•租户之间资源隔离•单个租户内部的服务隔离•公平调度?测试问题?•有些bug只有在特定的执行顺序才会复现•换个思路看待:•程序=状态机+输入•如何保证出现一次后每次都能出现•确定性•不确定性•随机数•线程的执行顺序•模拟

8、所有的输入更多技术细节更多细节请参考TiDB文档和代码,以及相关的参考论文<<从零开始写分布式数据库>>

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。