欢迎来到天天文库
浏览记录
ID:8219204
大小:753.43 KB
页数:38页
时间:2018-03-10
《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文档和代码,以及相关的参考论文<<从零开始写分布式数据库>>
此文档下载收益归作者所有