海量结构化数据数仓方案——Teryx

我们知道,对于传统的业务开发数据库行业有很多成熟的数据库可供选择,比如Oracle、Mysql等业务数据库已经横行数据库行业数十年,即使面向数据量剧增的业务系统开发,行业内也不断推出分布式业务系统来提供相应解决方案,比如Tidb、crdb,还有我们DANA自带的Stork业务数据库引擎,但对于海量业务数据的分析,原先的业务数据库明显吃不消,如果在业务系统上强行开发大数据分析类的应用,跑海量的分析SQL,结果只能是强扭的瓜不但不甜,还稀碎~

 

鱼与熊掌不可兼得,面对大数据开发业务过程中清晰的海量数据分析需求,DANA平台对此独立的引擎提供解决方案——Teryx分布式MPP数据库引擎。

 
 

Teryx是DANA大数据平台里PB级别的一款MPP架构的分布式数据仓库,为大数据运算分析场景的解决方案提供了有力的技术架构支撑。Teryx在开源的greenplum数据库代码上进行分支另行维护开发,对其进行代码级别的改造优化和产品封装,相比于原生数据库,总体性能提高约30%~50%。并且Teryx提供更便捷的安装部署和维护,使用户可以享受到更稳定的分布式数据库服务。

 

Teryx在实际项目上应用定义为结构化数据仓库,其扮演者两个角色——分析计算+存储。

 

分析计算方面

Teryx提供MPP大规模并行处理技术的特性。

 

MPP架构是一种类MapReduce而优于MapReduce的海量数据并行处理架构,其中最为关键的技术就是它能够判断出数据之间的相互依赖关系,将可以并行的部分分发到各个节点上并行运行,针对关系数据库中最为常用的等值比较和等值联接(Join)等操作做出特别的优化,将待比较的列按照某种规律进行hash,根据不同的hash值分发到不同的节点上去进行比较处理(它可以被看做是Hash Join的分布式版本)。将查询中能并行的操作和操作产生的中间结果,通过这样的方式分发到不同的节点上去运算,从而最大程度地并行处理,来达到提高性能的方法。如果同学们看不懂,从技术角度简单总结一句就是:少林功夫好!真的好!

 

敏捷开发方面

Teryx支持多种流行扩展语言实现用户自定义函数(UDF,类似于Oracle的存储过程),包括 Python,R,Java,Perl,C/C++ 等。

 

地理数据分析方面

通过集成PostGIS,Teryx支持对地理信息进行存储和分析。支持标准OpenGis协议和接口,可对海量地理数据简单快速的分析处理。

 

机器学习方面

内建数据挖掘算法库:通过MADLib(现在是Apache孵化项目)算法库,可以内建几十种常见的数据分析和挖掘算法到GPDB数据库中,包括逻辑回归,决策树,随机森林等。不需要写任何算法代码,通过SQL就可以使用其中的所有算法。

 

全文检索方面

Teryx内部集成GPText扩展,可以支持高效灵活丰富的全文检索功能。与 MADLib 合用,可以进行并行文本分析和挖掘。

 

另外,以上相关分析计算操作,Teryx完全支持ANSI SQL2008标准和SQL2003扩展;从应用编程接口来讲,支持标准JDBC/ODBC驱动接口,完善的标准支持使得系统开发、运维和管理都极为方便,而且Teryx支持分布式事务,支持ACID特性,保证数据的强一致性。对于开发者而言就像用标准数据库一样去组织自己的分析请求和逻辑,技术门槛大大降低!

 
作为数仓的角色,Teryx在存储方面也有很多亮眼特性:Share-Nothing架构。
 

相对于Oracle的share-everything架构,Teryx中每个节点的所有计算资源、存储资源都是独立存在的,无需多节点之间互通心跳等集群通讯和消耗,这样所有节点通过高速网络和master节点交互,这也是集群并行处理的可以平滑线性扩展的重要原因。

 
 

另外Teryx还支持外部表特性即hadoop系统中数据可以以外部表形式映射在Terxy中,可以作为老化数据的部分的存储形式,上可对接业务数据库,下可对接海量数据存储的hadoop生态,,以此功能Teryx可以简单的实现”数据湖泊”,它可以使用一条SQL在保证ACID前提下访问你所有数据,不管你的数据是在数据库中、文件系统中还是在hadoop存储hdfs中,可谓大数据系统中多元存储的不二利器。

 
 

Teryx的里存储支持多种数据压缩算法,包括QuickLZ,Zlib,RLE 等,最好支持十倍的数据压缩比,即如果有10T不常用或实时性要求不高的海量数据,可以利用最高压缩比的存储算法,只用1T的存储空间就可以实现此类数据的分布式存储和离线计算,存储空间大大节省。

 

Teryx目前已在部分项目上开始上线使用,即使单台环境已经有过在千万条以上数据查询性能10倍于stork的案例,Teryx作为DANA结构化数据分析和存储的强大数仓引擎,还有更多亮点特性和更优越的性能不断验证和优化后推出,为越来越海量的大数据项目提供底层有力支撑!

-END-