项目介绍
Tencent Transaction ProcessingTestbed System(简称3TS)——
腾讯公司CynosDB(TDSQL)团队与中国人民大学数据工程与知识工程教育部重点实验室,联合研制的面向数据库事务处理的验证系统。该系统旨在通过设计和构建事务(包括分布式事务)处理统一框架,并通过框架提供的访问接口,方便使用者快速构建新的并发控制算法;通过验证系统提供的测试床,可以方便用户根据应用场景的需要,对目前主流的并发控制算法在相同的测试环境下进行公平的性能比较,选择一种最佳的并发控制算法。目前,验证系统已集成13种主流的并发控制算法,提供了TPC-C、PPS、YCSB等常见基准测试。3TS还进一步提供了一致性级别的测试基准,针对现阶段分布式数据库系统的井喷式发展而造成的系统选择难问题,提供一致性级别判别与性能测试比较。
未来,3TS系统将会深度探索数据库事务处理相关理论与实现技术,其核心理念是:开放、深度、进化。开放,秉承开源之心,共享知识、共享技术;深度,践行系统化钻研之精神,对于事务处理技术的本质问题进行研究,不破楼兰终不还;进化,路漫漫其修远兮,吾将上下而求索,不断前行,不断推进。
作为一个事务处理技术相关的框架,3TS致力于探索的本质问题主要包括:
1. 分布式数据库的事务处理技术,会受到哪些因素的影响(可用性?可靠性?安全性?一致性?扩展性?功能?性能?架构?新硬件?AI?……)?
2. 分布式事务型数据库系统的评价、评测体系应该如何建立?
3. 世界上有多少种数据异常?数据异常的体系化研究方法如何建立?
4. 为什么并发访问控制算法会有很多种?各种并发访问控制算法之间,有没有的本质的关联关系?
为此,3TS从如下七个方面着手,进行系统化研究:
1. 数据异常探索
2. 并发访问控制算法(主流并发访问控制技术和多种先进并发技术):评估、优化与创新
3. 多级一致性:共享对象一致性(或分布式一致性)与事务一致性融合之下,探索各种强一致性、弱一致性。数据库事务的隔离级别、共享对象各种一致性模型之间有什么本质关联关系?他们是否能够有效融合在一起(而不是单纯的用“strict serializability”把“serializability”和“Linearizability”关联在一起)?
4. 高可用事务:多级一致性与CAP关系。在7*24的高可用性要求面前,分布式数据库的事务处理机制,应该如何构建?强一致和高可用真的在网络分区的背景下“鱼和熊掌不可兼得“吗?
5. 事务处理架构:存算分离的背景下,事务处理模块和其他模块在架构层面的关系与解耦、扩展性等。事务处理模块,是放在客户端、还是中间件层,还是在服务端与其他模块紧密耦合才能正确而高效?
6. AI、新硬件与事务:探索AI技术、新硬件和事务处理技术的关联关系。AI技术对于事务处理相关技术,除了用于事务调度还有哪些更多的技术?新硬件对于数据库架构对于事务处理技术究竟有着什么样的影响?
7. 事务处理技术的相关评估、测试体系:评价一个数据库系统事务处理技术的指标,应该如何建立?现有的体系够用吗(TPC-C标准不能覆盖写偏序(Write skew)等数据异常从而不能验证可串行化隔离级别。YCSB?Sysbench?J-Meter?)?还是能有更多更好的标准?
系统特色
1. 事并发事务处理技术的性能测试床。数据管理正在经历从SQL到NoSQL、NoSQL到NewSQL时代的变迁。NoSQL虽然具备系统的高可用和高可扩展性特色,但牺牲了事务特性,无法适应于当前Mission-critical的应用,甚至连最基本的社交网络中的交友行为(A、B两个用户的交友行为,涉及两个操作:A加为B的好友,B加为A的好友,这两个操作是一个不可分割的整体)都无法很好的支持。NewSQL继承了关系数据库的优点,保留了NoSQL的高可用和高可扩展特点,是当前分布式数据库技术发展的目标。然而,构建NewSQL系统极具挑战,其中,特别是构建兼具高性能和高可扩展性的分布式事务,是系统设计和研制最难的问题之一。针对这一问题,3TS提供了一个面向分布式事务并发控制技术的开发框架,该框架调研了基于封锁(Locking)、乐观并发控制(OCC)、时间戳(TO)、多版本(MVCC)的并发访问控制技术,实现了当前主流的13种并发控制技术,并提供了TPC-C、PPS、YCSB等常见基准测试。通过开发框架提供的访问接口,用户可以研制新的并发控制算法,并与当前主流的并发控制技术进行性能上的对比。性能测试床将为数据库系统内核开发者、有志于从事数据库研究的在校同学等提供实践的平台,为核心关键技术人才培养提供技术基础。
2. 事务一致性级别的测试床。从并发操作致使数据的一致性有不同的数据异常起,在共享对象(内存)、数据库系统、分布式存储系统等领域,事务相关的理念和概念从萌生到被系统化研究,几十年来一直不断,研究从粗到细,很多子领域已经结出累累硕果。然而,一些内容尚没有研究透彻,存在“case by case”的研究方式,使得被研究对象缺乏统一性和完整性。
其中,最为典型的,是数据库的事务处理技术,以ACID为技术特性,旨在保障并发事务所操作过的数据上的一致性,即并发事务调度可串行化(数据无“数据异常”)。但是,这个世界上,究竟有多少种数据异常,这样的基础问题,尚未可知。而此问题上,“case by case”研究方式带来的局限性更为显著,只有个别的数据异常被发现,而已知的数据异常间的关系却不为人知。但隔离级别、并发访问控制算法等技术的定义,却依赖于已知的有限的数据异常。
另外,随着大数据时代的到来,分布式数据库从研究领域步向了工程实践领域,一个逻辑系统分身化为N个实体的子系统而丧失了内聚的逻辑单调性,使得分布式事务型数据库的一致性也分身泛化为ACID的C和CAP的C。而可串行化技术,没有考虑并发事务间的因果关系,不完美。这使得分布式事务型数据库的研究存在了一个很好的研究契机,即:数据异常和两种一致性(ACID的C和CAP的C)有着什么样的关系?管理这样的关系的技术即并发访问控制技术是否足够有用且好用?业界有着一些一致性研究,但尚无一个统一的认知。
系统定位
3TS非一个工程系统,而是一个研究体系。此体系内,有多个子系统,并将按照前述的研究范围,扩展出更多的子系统。目前,3TS中包括了腾讯自研的事务验证系统,以及3TS-Deneva子系统,支持的并发访问控制算法包括:可串行化、冲突可串行化、SSI、WSI、BOCC、FOCC、Sundial/Tictoc、Maat、OCC、Silo、TO、Locking(No Wait、 Wait Die)、Calvin等,未来将支持更多的并发算法和其他相关技术。我们将提供更详细的文档描述3TS包括的技术内容。
未来计划
我们将陆续更新后续研发计划。对于计划中的每一项,我们会给出详细说明。
近期计划:
1. 持续为3TS添加新的并发算法,并进行优化工作
2. 为3TS的并发算法实现多种隔离级别
3. 为3TS增加全局时钟的功能,保证分布式时钟同步
期望3TS是一座桥梁,能够帮助业界的同学快速、有深度和广度的掌握数据库事务处理技术,希望大家一起在事务处理及时的前研领域展开研究,共同提高和进步
3TS开源啦!
https://github.com/Tencent/3TS
(点击文末阅读原文直接访问)
请给项目 一个 Star !
欢迎提出你的 issue 和 PR!
国内镜像地址:
https://git.code.tencent.com/Tencent_Open_Source/3TS
(登录后才能访问公开项目)
腾讯工蜂源码系统为开源开发者提供完整、最新的腾讯开源项目国内镜像