Go 构建大型开源分布式数据库技术内幕
649.68 KB
44 页
0 评论
语言 | 格式 | 评分 |
---|---|---|
中文(简体) | .pdf | 3 |
摘要 | ||
文档阐述了使用Go语言构建大型开源分布式数据库的技术内幕,重点介绍了TiDB和TiKV的架构设计及其核心原则。TiDB作为/postgresql wires兼容的数据库,支持24/7 availability,具备混合事务与分析处理能力,并强调开源的重要性。TiKV采用Raft协议实现分布式一致性,通过分层架构和gRPC通信确保系统的高可用性和扩展性。文档还提到了构建分布式数据库的关键原则,包括分层设计、测试的重要性以及与社区的紧密合作。 | ||
AI总结 | ||
《Go 构建大型开源分布式数据库技术内幕》摘要:
本文由PingCAP的申砾(TiDB技术负责人)主讲,围绕如何使用Go语言构建大型开源分布式数据库展开,与会者包括网易有道、360搜索及PingCAP的实务工程师。
核心内容:
一、分布式数据库构建原则
1. 分层思想:分层设计使系统模块化,便于维护和扩展
2. 正确性与高效性:系统需同时满足正确性和高效性的要求
3. 测试重要性:强调测试在分布式系统中的关键作用
4. 简单易用:系统设计应追求简单明了,易于操作和理解
5. 社区协作:涉及开源开发,强调与开源社区的紧密合作
二、AP型分布式数据库特点
1. 支持混合事务和分析处理(Hybrid Transactional/Analytical Processing, HTAP)
2. 7x24小时可用性,即便数据中心发生故障也能正常运行
3. 开源开放:符合开源开发的理念
三、TiDB技术栈与实现(以下为详细介绍)
1. TiDB架构构成:
- TiDB(SQL层):负责接受和处理用户的SQL请求
- TiKV(存储层):分布式存储引擎,采用Raft协议进行数据复制
- PD(Placement Driver,位置驾驶员):负责元数据和存储位置管理
2. TiDB实现示例:
- 数据表t的创建:包含主键c1和字段c2,并通过KEY idx_c1(c1)建立索引
- 查询示例:统计c1大于10且c2等于"golang"的记录数
- 查询计划:
- 部分聚合COUNT(c1)
- 过滤条件:c2等于"golang"
- 索引读取:使用索引idx1进行范围查询
- 物理执行计划:
- TiKV端进行物理索引扫描,读取行数据
-_rowID读取行记录
-最终汇总结果进行聚合
- 分布式执行计划:
-TiKV节点扫描索引区间(10,正无穷)
-TiKV节点进行COUNT(c1)操作
-TiDB节点进行最终的COUNT(c1)汇总
3. 架构设计:
- 分层架构:清晰的模块划分,包括Balanced/分层、Failover、Metadata、Timestamp请求状态
- 组件协作:TiDB、TiKV、PD之间通过gRPC协议进行通信,构建完整的分布式数据库架构
四、讲师背景
姓名:申砾
职位:TiDB技术负责人
工作经历:网易有道、360搜索、PingCAP
专业领域:基础设施软件工程
结语:
本次分享详细阐述了使用Go语言构建大型开源分布式数据库的关键思路和技术实现,重点介绍了TiDB这一开源项目在HTAP领域的实践,为工程师理解分布式数据库的设计原则和实现细节提供了宝贵的参考。 |
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余
37 页请下载阅读 -
文档评分