双实时分析型内存数据库Ginkgo

发布时间:2023-07-20浏览量:246

Ginkgo是我院自主研发的基于内存集群的分布式OLAP系统,它旨在为关系型数据提供实时的分析服务,曾获2017年度上海市科技进步一等奖,现已应用于江苏移动,并在Github开源,其特点如下: 

1)、快速大规模的并行执行处理:基于大规模分布式内存集群,通过列存储、列剪枝以及弹性流水线等技术,充分利用每台机器上的硬件性能,获得了优于主流开源软件系统的查询处理性能;

2)、高效的内存数据处理:Ginkgo采用了大量的优化技术来实现高效的内存数据处理,包括批处理、cache敏感型算子、SIMD优化、代码生成优化、无锁和并发处理结构等。这些优化使Ginkgo能够在每个线程上都达到每秒GB级的数据处理速度。

3)、无阻塞的实时数据注入:提出并实现了强一致性实时数据注入方法,解决了业务系统与分析系统间的实时数据同步问题,实现了200毫秒内的数据同步;

4)、强大的 SQL支持:除去对Select、Update、Delete等基本功能的支持之外,我们还提供诸如desc、truncate、to_char、union、distinct 等一系列更细粒度数据操作算子的支持;

5)、分布式数据导入:针对HDFS中导数据速度过慢的问题,我们提出并实现了分布式导入的方法,改变了由传统单节点导入造成的性能瓶颈,大大加快了导入的速度;

6)、有效的事务支持:防止数据被轻易篡改,我们实现了可重复读级别的事务保障,提供事务ACID特性支持,并将元数据放入Zookeeper进行管理以保证元数据信息的一致性。

7)、用户体验良好:不同于其他基于C++实现的开源系统如Impala等,Ginkgo有着良好的用户体验,安装友好便捷,并提供HTTP和JDBC等快速访问接口。

架构图如下所示:

ginkgo.png

图1: Ginkgo架构图


实时注入模块

Ginkgo的实时注入模块(数据注入流程图如图2所示),用于及时接收交易系统传输的数据,不仅可以支持对这些数据在线处理,更能够将这些数据存储。该模块基于事务处理控制方式,设计并实现以下的一系列功能:

(1)针对实时数据注入对应的追加型事务,采用面向元数据的集中式事务处理的策略,实现事务性数据注入,以避免直接对分布式数据注入操作实现事务性管理;

(2)非阻塞式分布式数据注入框架,将传统的集中式单机数据注入转变为分布式数据注入,充分利用多台机器的性能,避免性能受限于单机的处理瓶颈;

(3)提供强一致性的数据查询模型,实时注入的数据在后续的实时查询中即时可见,支持在实时注入更新的数据集上实时查询;

(4)使用log-shipping技术实现数据热备,面对服务机器宕机支持快速切换,对外提供高可用性的服务,满足金融领域的可用性要求。

ginkgoo.png

图2: Ginkgo数据注入流程图


实时查询模块

Ginkgo的实时查询模块采用MPP架构,能够高并发地处理任务,充分利用系统资源,响应SQL查询。主要特点有:

(1)充分利用分区并行、流水线并行、操作内并行和独立并行,高并发执行任务;

(2)利用LLVM技术编译代码,提高操作运行效率;

(3)采用弹性流水线技术(如图3所示),可以根据负载和资源,动态伸缩并行度,充分利用资源,提高运行效率;

(4)运行时任务调度模块,能够感知系统负载,调度合适的任务,高效实现任务之间的独立并行。

ginkgooo.png

图3: Ginkgo动态流水线技术示意图


联系人

翁楚良 钱卫宁

代表性技术论文:

  • Zhuhe Fang, Chuliang Weng, Li Wang, Huiqi Hu, Aoying Zhou. Scheduling Resources to Multiple Pipelines of One Query in a Main Memory Database Cluster. IEEE TKDE. Published online.

  • Zhuhe Fang, Chuliang Weng, Li Wang, Aoying Zhou. Parallelizing Multiple Pipelines of One Query in a Main Memory Database Cluster. ICDE 2018: 1252-1255

  • Li Wang, Minqi Zhou, Zhenjie Zhang, Yin Yang, Aoying Zhou, Dina Bitton. Elastic Pipelining in an In-Memory Database Cluster. SIGMOD Conference 2016: 1279-1294

  • Li Wang, Minqi Zhou, Zhenjie Zhang, Ming-Chien Shan, Aoying Zhou:NUMA-Aware Scalable and Efficient In-Memory Aggregation on Large Domains. IEEE Trans. Knowl. Data Eng. 27(4): 1071-1084 (2015)

  • Ling Gu, Minqi Zhou, Zhenjie Zhang, Ming-Chien Shan, Aoying Zhou, Marianne Winslett. Chronos: An elastic parallel framework for stream benchmark generation and simulation. ICDE 2015: 101-112