百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

刀尖上的乾坤大挪移 :RapidsDB技术大起底

ccwgpt 2025-02-07 16:52 44 浏览 0 评论

大数据和互联网时代,正冲击每一个行业,技术的日新月异,令人目不暇接,但是从整个行业来看,基于Hadoop的批量大数据处理方式,以及基于内存数据库和内存计算的实时处理和分析,已经慢慢成熟,并且成为了事实上的标准。随着内存闪存造价的不断下降和技术的不断成熟,基于MPP海量并行技术的内存数据仓库,不再是遥不可及的传说,并成为了我们身边触手可及的应用。使用标准的PC服务器,我们就能够在企业中随意搭建这么一套内存MPP的数据仓库,并结合业务对身边的大数据作出实时的决策。

本篇文章来自柏睿数据CTO刘睿民先生,作为国产软件在高端基础技术上吃螃蟹的人,刘睿民将会介绍柏睿数据公司出品的重要产品— MPP内存数据仓库Rapids DB的重要特性,以及实现过程中的一些技术细节。

RapidsDB进入关键应用系统

早在2014年,公司成立尚短,产品尚在研发阶段的时候,作为国产的一款内存数据库,RapidsDB就已经引起了国内主要运营商和一些对数据查询处理速度有高要求的企业的关注,并提出了试用申请。

2014年12月,随着RapidsDB V1.0版本推出,作为一款海量数据高速处理引擎,RapidsDB正式进入联通实际项目,作为客户用户搜索的一个重要数据处理平台投入使用,紧密耦合了当下的Hadoop技术,每日为上亿级别的数据提供处理支持。这意味着RapidsDB已经有能力满足海量数据的处理要求,同时也能够支持复杂、高可靠的企业级应用。

RapidsDB组件

RapidsDB产品设计之初就是一个完全并行的,基于分布式内存的分析型数据仓库。理论上来说,它是可以运行在一系列不同的新一代存储介质之上,使用最接近人类思维的SQL语句来操纵及查询分布在并行节点上的千亿级别数据。

RapidsDB的一个简单的示意如图1所示,用户只需要专注于SQL语句的编写,复杂的分布式内存处理及查询优化,则交由系统底层来自动处理。

图1 RapidsDB示意

存储在各个节点内存中的分布式数据,被统一地管理和访问,用户将查询语句提交给RapidsDB的分布式查询引擎DQS,DQS(Distributed Query System)又由DQC和DQE几个组件来共同组成。

以下我对组成RapidsDB的几个部件进行一个简要的说明。

数据存储(Data Store)

The Data Store是一种分布式内存数据存储系统,我们往往把需要查询的数据存储在节点对应的内存当中,Data Store由Storage Engine进行管理。并且通过DQS的接口进行查询和简单的事务处理。

分布式查询系统(DQS)

分布式查询系统为用户提供了查询内存数据的SQL接口。用户不需要知道知道数据存储在哪一个节点当中,DQS保存了数据存储相关的元数据,通过解析用户的查询语句,DQS能够直接和存储的数据进行交互。

DQS连接器

DQS支持与底层存储的引擎接口插件技术,也可以叫做DQS连接器。连接器被部署在每一个节点的存储引擎当中,利用本地存储引擎的能力,将用户查询语句直接在该节点进行处理。在未来,连接器还将提供相应的SDK,允许第三方开发的连接器访问他们自己选择的存储引擎。

分布式查询协调器(Distributed Query Coordinator)

DQC接收用户提交的指令并进行处理。用户可以通过命令行界面(CLI)提交查询,或通过RapidsDB的编程API提交查询。DQC将解析查询语句,然后建立一个并行查询计划,同时将该查询计划交给分布在每一个节点的执行者(DQEs)执行。DQC将吸收所有DQEs的结果,其中可能包括额外的处理如聚集或排序,然后将结果返回给调用者。

分布式查询执行器Distributed Query Executor (DQE)

分布式查询执行器(DQE)负责响应在每一个Data Store中的数据子集。通常在每个有存储引擎实例运行的节点中,都会有一个DQE系统。DQE负责执行查询计划,DQE将使用相关DQS连接器在查询计划与相关的存储引擎进行通信。并且返回查询结果给用户。

配置管理(Configuration Management)

RapidsDB使用ZooKeeper作为集群配置管理工具。

RapidsDB功能介绍

RapidsDB虽然主要的诉求是一款面向分析的分布式内存数据仓库,其实它本身具有OLTP和OLAP双引擎,能够满足简单的事务处理和ACID操作,同时又有最大可能性能满足时下大数据所面临的超大规模数据库跨节点的大表关联应用,并且在提供实用功能的同时,可以通过实时添加节点数及内存大小,来实现性能的横向扩展。

数据分布方式

整体而言,RapidsDB使用Shared Nothing结构:整个数据库的数据分散到集群的多台机器上。RapidsDB的数据分布策略是基于哈希的,存储在RapidsDB中的每一张表,对数据的主键哈希取模后的结果,对应于数据存储的节点。相较于BigTable基于主键的连续范围分段的方法,哈希方法的好处是数据分散均匀,没有动态数据调整的烦恼。但也有很多缺点,采用这种方法后,集群的规模是事先确定好的。另外,数据哈希被分散后,数据的连续性被打乱了,在这个数据结构上做范围查询需要动用服务这张表的所有机器。

数据事务处理

为了充分发挥多核机器的性能,而又不引入多线程执行事务的复杂性,Rapids DB的数据分片规模是按照集群核数来划分的。一台物理机器上可能运行多个Rapids DB服务器进程,每个进程对应于一个核,服务器进程之间都是通过网络进行通信。在单个进程内,只使用单线程,所有的事务执行都按顺序进行。

多个事务在多个服务器节点同时执行,Rapids DB保证如果事务之间有冲突,那么事务的执行是完全隔离的,即达到SERIALIZABLE ISOLATION。Rapids DB会事先分析好存储过程之间的关系,如果两个事务可能存在冲突,则不让这两个进程在同一个时间执行。

图2 Rapids DB并发处理

在Rapids DB的并发处理中,每一个事务在执行之前都要等待一个Round Trip时间,显然会增加事务执行的时延。这么做是为了确保别的节点没有发起比这个事务更早的事务,保证事务执行的顺序。在实现中,Rapids DB用了另外一种优化方法。例如A,B两个节点,分别要执行事务1和2,A节点开始执行事务1的时间是T1,如果A收到B发了事务2的执行需求,并且T2 > T1,那么A节点可以确认从B节点不会有更早的事务再发送过来,A节点就不必等Round Trip时间,可以直接执行事务1。当整个系统压力比较大时,这个优化方法效果尤其明显,事务的时延有效降低。

Rapids DB还花了很大精力在处理事务之间的逻辑关系,尽可能对事务分门别类进行处理,以期获得更好的性能。

数据安全保障

和传统数据库提供的HA解决方案不同,Rapids DB提供三种HA能力:K-safety,网络故障检测,存活结点重连(rejoin)。

K-safety(通过数据多副本方式实现数据安全)

当配置成K-safety时,Rapids DB会自动地复制数据库分区,K表示副本的个数。例如K=0时表示没有副本,所以任何一个结点的故障,都会导致整个数据库集群停止服务。当K=1时表示有1个副本,即一共2份拷贝。RapidsDB中的副本是可以读写的,而不是传统的主从复制关系。

关于数据同步问题的解决,任何发生在复制分区上的操作,都会发送给各个拷贝的结点去执行,来保证一致性。如果其中一个结点失败,那么数据库会继续发送这个操作给失败的结点。因此在这一点上Rapids DB与传统数据库有很大不同,不存在多主(multi-master)情况下的数据同步冲突问题。所以K-safety也叫做同步多主复制。

网络故障检测

当网络发生故障时,Rapids DB的结点彼此之间被物理隔离开,而认为对方已经发生故障。那么K-safety机制会使这两侧的结点继续分别提供服务。如果不及时检测到的话,这种“分离的大脑”(split brain)会导致严重的数据同步问题。因此,Rapids DB会自动检测网络故障,立即评估出哪一侧结点应该继续服务,并快照另一侧的结点数据后停掉服务。网络故障解决时,可以直接使用下面将介绍到的存活结点重连技术将结点重新加入到集群中。

存活结点重连

万一出现了离线的节点,离线了的RapidsDB结点可以通过rejoin操作重新加入到集群中。具体过程是:首先从兄弟结点获得一份数据拷贝,当追赶上兄弟结点时,此存活结点就可以回到正常状态,继续接受任务了。

数据编程接口

Rapids DB提供了主流编程语言的相应接口,可以通过客户端连接后编程,对数据库进行操作,复杂查询使用CLI方式访问。Rapids DB编程当中的事务操作,从需求来看,既需要支持复杂的事务操作,又需要快速的执行过程。由于RapidsDB主要聚焦的是分析性的复杂查询,因此对事务的控制方面,所有事务均采用自动提交,不支持手动提交事务。不允许用户使用传统的OLTP中“Begin Transaction”和“End Transaction”的语法模式,而是完全基于Java编写的存储过程。用户通过写Java存储过程完成应用程序的逻辑,作为一个先置条件将Java存储过程提交到RapidsDB。运行时,用户程序调用存储过程完成事务操作,所有事务的运行逻辑是由RapidsDB在服务器进程中完成的。这保证了事务不会被人为打断,并且服务器可以预先判断各个事务的逻辑,提高并发效率。

系统横向比较

横向比较而言,许多人会首先想到Oracle的内存数据库TimesTen。最明显的区别就是,TT不是个MPP的架构,无法横向扩展;而RapidsDB强调的不仅仅是内存中存储数据,还更加强调内存中可以执行复杂计算及复杂查询。虽然TT支持数据复制功能,但是RapidsDB是一个真正的MPP Cluster,一个表可以被Hash到每一个节点上,CPU并行计算,以此来提高硬件利用率,而TT则只是单纯通过数据复制来提高性能。

作者:刘睿民

简介:柏睿数据科技有限公司董事长兼CTO、艾诺威讯(北京)科技有限公司首席执行官、联想中国服务总部首席技术顾问、国家信标委ISO SC32国际专家国家信标委ISO WG10 IoT物联网国际协调员。

相关推荐

自己动手写Android数据库框架_android开发数据库搭建

http://blog.csdn.net/feiduclear_up/article/details/50557590推荐理由关于Android数据库操作,由于每次都要自己写数据库操作,每次还得去...

谷歌开源大模型评测工具LMEval,打通谷歌、OpenAI、Anthropic

智东西编译|金碧辉编辑|程茜智东西5月28日消息,据科技媒体TheDecoder5月26日报道,当天,谷歌正式发布开源大模型评测框架LMEval,支持对GPT-4o、Claude3.7...

工信部:着力推动大模型算法、框架等基础性原创性的技术突破

工信部新闻发言人今日在发布会上表示,下一步,我们将坚持突出重点领域,大力推动制造业数字化转型,推动人工智能创新应用。主要从以下四个方面着力。一是夯实人工智能技术底座。通过科技创新重大项目,着力推动大模...

乒乓反复纠结“框架不稳定”的三个小误区

很多球友由于对框架的认知不清晰,往往会把“框架不稳定”当成一种心理负担,从而影响学球进度,其典型状态就是训练中有模有样,一旦进入实战,就像被捆住了手脚。通过训练和学习,结合“基本功打卡群”球友们交流发...

前AMD、英特尔显卡架构师Raja再战GPU,号称要全面重构堆栈

IT之家8月5日消息,知名GPU架构师拉贾科杜里(RajaKoduri)此前曾先后在AMD和英特尔的显卡部门担任要职。而在今日,由Raja创立的GPU软件与IP初创企...

三种必须掌握的嵌入式开发程序架构

前言在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件架构对于系统整体的稳定性和可靠性是非常重要的,一个合适的软件架构不仅结构清晰,并且便于开发。我相...

怪不得别人3秒就知道软考案例怎么做能50+

软考高级统一合格标准必须三科都达到45分,案例分析也一直是考生头疼的一门,但是掌握到得分点,案例能不能50+还不是你们说了算吗?今天就结合架构案例考点,分享实用的备考攻略~一、吃透考点,搭建知识框架从...

UML统一建模常用图有哪些,各自的作用是什么?一篇文章彻底讲透

10万+爆款解析:9大UML图实战案例,小白也能秒懂!为什么需要UML?UML(统一建模语言)是软件开发的“蓝图”,用图形化语言描述系统结构、行为和交互,让复杂需求一目了然。它能:降低沟通成本避...

勒索软件转向云原生架构,直指备份基础设施

勒索软件组织和其他网络犯罪分子正越来越多地将目标对准基于云的备份系统,对久已确立的灾难恢复方法构成了挑战。谷歌安全研究人员在一份关于云安全威胁演变的报告中警告称,随着攻击者不断改进数据窃取、身份泄露和...

ConceptDraw DIAGRAM:释放创意,绘就高效办公新未来

在当今数字化时代,可视化工具已成为提升工作效率和激发创意的关键。ConceptDrawDIAGRAM,作为一款世界顶级的商业绘图软件,凭借其强大的功能和用户友好的界面,正逐渐成为众多专业人士的首选绘...

APP 制作界面设计教程:一步到位_app界面设计模板一套

想让APP界面设计高效落地,无需繁琐流程,掌握“框架搭建—细节填充—体验优化”三步法,即可一步到位完成专业级设计。黄金框架搭建是基础。采用“三三制布局”:将屏幕横向三等分,纵向保留三...

MCP 的工作原理:关键组件_mcp部件

以下是MCP架构的关键组件:MCP主机:像ClaudeDesktop、GitHubCopilot或旅行助手这样的AI智能体,它们希望通过MCP协议访问工具、资源等。MCP主机会...

软件架构_软件架构师工资一般多少

软件架构师自身需要是程序员,并且必须一直坚持做一线程序员。软件架构应该是能力最强的一群程序员,他们通常会在自身承接编程任务的同时,逐渐引导整个团队向一个能够最大化生产力的系统设计方向前进。软件系统的架...

不知不觉将手机字体调大!老花眼是因为“老了吗”?

现在不管是联系、交友,还是购物,都离不开手机。中老年人使用手机的时间也在逐渐加长,刷抖音、看短视频、发朋友圈……看手机的同时,人们也不得不面对“视力危机”——老花眼,习惯眯眼看、凑近看、瞪眼看,不少人...

8000通用汉字学习系列讲座(第046讲)

[表声母字]加(续)[从声汉字]伽茄泇迦枷痂袈笳嘉驾架咖贺瘸(计14字)嘉[正音]标准音读jiā。[辨形]上下结构,十四画。会意形声字,从壴从加,加也表声。注:从壴,字义与鼓乐有关;从加,字义与...

取消回复欢迎 发表评论: