TiDB,为SQL注入分布式可扩展性

时下,一大批新型数据库急剧涌现,诸如 Google Spanner 、 FaunaDB 、 Cockroach 以及 TimeScaleDB 等等,这些数据库都在专注解决影响标准SQL的规模问题。现在,另一位来自中国北京的竞争者—— PingCAP 开源的 TiDB 项目,旨在维持 ACID 事务的同时,使 SQL 也具备 NoSQL 系统的可伸缩性。

PingCAP 联合创始人兼首席执行官刘奇表示,该项目全面支持 MySQL 协议,也就意味着用户可以重新利用 MySQL 工具,大大减少迁移成本。在多数情况下,用户甚至无需修改应用程序的任何代码即可取代 MySQL 另外它是横向扩展的,通过简单地增加机器数量就可以提高性能。

去年十月,刘奇在阿姆斯特丹的 Percona Live 会议上提出了 TiDB 项目,彼时项目还处于测试阶段,目前项目已进化到候选版本。本周四, PingCAP 联合创始人兼首席技术官爱德华黄将在加州,圣克拉拉的 Percona Live 会议上披露 TiDB 项目的新进展。

他们认为 TiDB 兼具 SQL 和 NoSQL 的优势,并且致力于使它:

  • 易于使用;
  • 确保数据不会丢失,故障情况下自我修复;
  • 跨平台且可以在任何环境中运行;
  • 开源。

该项目还允许模式在线变化,所以可以根据实际需求来修改模式。此外,在不影响业务进展的前提下,用户还可以添加新列和索引。

在某次邮件采访中,刘奇提到:作为一个开源项目, TiDB 已有超过 100 名贡献者。

TiDB 项目灵感来源于 Google F1 分布式数据库及 Google Spanner 。 Google 在自己的专有系统上建立了 Spanner ,并不开源,这在一部分人看来是个缺点。

“如果使用 Spanner ,用户即默认承诺在 GCE( Google Compute Engine )运行服务,并有可能贯穿服务的整个生命周期。即使用户选择运行自己的堆栈,也不会出栈。” Cockroach Labs 首席执行官 Spencer Kimball 此前曾向 The New Stack 透露。

TiDB 采用松散耦合的方法,由一个 MySQL Server 层和 SQL 层组成,其基础是开源分布式事务键-值数据库 TiKV。 TiKV 是另一个 PingCAP 项目,使用 Rust 编程语言和分布式协议Raft ,而 TiDB 用的是 Go 编程语言。 TiKV 项目内含 MVCC(多版本并发控制)、 Raft 以及使用 RocksDB 的本地键值存储等功能,它同样使用 Spark Connector 。

刘奇表示, TiDB 与 Spanner 相比较有两点不同:

Spanner 底层依赖于 Google的Colossus 分布式文件系统,但 TiDB 可以确保安全日志存储在 Raft 层。也就是说 TiDB 不依赖任何分布式文件系统,大大降低了写入延迟。

“我们还看到了 SQL 优化器的巨大潜力,但 Google 似乎并不打算在 F1 项目中深入研究这方面。在设计我们的项目时,我们就旨在探索优化器的能力,”他说。

受益于原子钟的使用, Spanner 获得了广泛关注,用户可以借助它在地理分布的数据中心间获得时间同步。 TiDB 没有使用原子钟和 GPS 时钟,相反,它依靠 Percolator( 2006 年Google 发表的一篇论文)中所介绍的 Timestamp Allocator 。

TiDB 支持流行的容器技术,例如 Docker 。目前团队正在致力于对 Kubernetes 提供支持,刘奇表示,这方面工作中的难点,在之前的阿姆斯特丹会议上恰好提到过。

现在他们正在努力解决的最大问题是延迟,尤其是地理分布的数据中心之间存在的延迟,他希望这一问题能在不久的将来得到解决。

PingCAP 由高级分布式系统工程师黄东旭、高级系统工程师崔秋以及基础设施工程师刘奇共同创立于 2015 年 4 月,它有 48 个在北京的工程师和其他来自中国各地的远程工作者。

其客户包括手机游戏提供商 GAEA,它使用 TiDB 支持跨平台的实时广告系统,这要求面对大容量数据时能够在一定期限内具备高峰负荷能力和经验。 TiDB 支持自动分片和底层, TiKV 自动分配集群中的数据,帮助 GAEA 降低操作和维护的成本。

你可能感兴趣的:(TiDB,为SQL注入分布式可扩展性)