刘奇-TiDB为HBase插上分布式SQL的翅膀

preview
4星 · 超过85%的资源 需积分: 0 66 下载量 52 浏览量 更新于2015-11-03 收藏 702KB PDF 举报
根据提供的文件信息,以下是详细的知识点: Apache HBase是一个开源的非关系型分布式数据库(NoSQL),它采用列式存储方式,模仿Google的BigTable,运行在Hadoop文件系统(HDFS)之上,同时为大数据的随机访问和实时读写提供了支持。HBase的主要特性包括线性和模块化扩展性、严格的读写一致性、区域服务器之间的自动故障转移、对实时查询的块缓存和布隆过滤器支持,以及查询谓词推送通过服务器端过滤器实现等。 TiDB是一个开源的分布式SQL数据库,由PingCAP公司开发,并且在文档中介绍了TiDB如何在HBase之上提供分布式SQL的支持。TiDB支持分布式事务的一致性,兼容MySQL协议,允许应用程序几乎不需要代码修改的情况下替换MySQL,极大简化了应用代码并增强了其健壮性。它主要面向在线事务处理(OLTP),与多种OLAP系统如Spark, Presto, Impala等并存。 TiDB的架构可以概括为: 1. 在HBase上建立事务层。 2. 使用Google Percolator模型,它包含BigTable、事务和时间戳三个组件。 3. Percolator worker、BigTable tablet server和GFS chunk server三个部分组成Percolator模型。 4. 提供ACID语义的事务处理。 5. 实现快照隔离,但与传统关系型数据库管理系统(RDBMS)相比可能偏弱,并需要显式维护锁。 文档中还提及了MVCC(多版本并发控制),这是一种用于实现事务的方法,它允许多个版本的数据同时存在,并且每个事务都可以看到一个一致的快照。TiDB通过这种方式来实现严格的一致性和隔离性。 在文档提到的演示中,刘奇讨论了HBase的引入以及TiDB的特性,包括它如何利用Go语言的优势进行快速开发和运行。Go语言(通常称为Golang)是一种静态类型、编译型语言,由Google开发,其设计目标是在保持简洁性的同时,实现开发效率和程序运行效率的平衡。TiDB由Go语言编写,这也使其能够更快地开发,并且在运行时具有高性能。 此外,文档还提到了TiDB对于存储引擎的支持,其中包括支持在单机模式下运行的最流行的存储引擎,如Goleveldb、LevelDB、RocksDB、LMDB和BoltDB等。通过支持多种存储引擎,TiDB为数据库的灵活性和性能提供了更多的选择和优化空间。 在架构方面,TiDB可能采用了一种类似于HBase的三层架构模型:客户端、事务管理器和存储层。这使得TiDB能够构建在HBase之上,并在此基础上实现分布式事务。 文档中提到了对于HBase的热烈讨论,比如“SQL-on-Hadoop没有什么比它更火的了,而现在SQL-on-HBase的热度正在迅速追赶”,这表明了社区对于HBase在处理SQL工作负载方面潜力的兴奋和期待。TiDB的出现,正如同其标题所指出的,为HBase插上了分布式SQL的翅膀,进一步扩展了其作为大数据存储和计算平台的潜力。