大数据最全开源 SPL 打破数据库计算的封闭性_spl数据库,腾讯大数据开发开发面试经验

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

把外部数据存储在数据库中,又会形成众多中间表,面临中间表的各种问题。而且有些互联网上取过来的数据常常是多层的 json 或 XML 格式,在关系数据库中还要建立多个关联的表来存储,会进一步加剧中间表的问题。

存储过程带来的安全和耦合问题

除了中间表,还经常会使用存储过程,虽然存储过程缺点很多(缺乏移植性、编写调试困难等)。为什么会这样呢?由于数据库计算必须在封闭的库内完成,但有些复杂计算通过一句SQL很难实现,而存储过程支持分步计算,且可以利用数据库计算能力,因此大家不得不容忍其缺点。

查询分析类的存储过程是需要经常修改的,由于存储过程与数据库紧密结合,如果程序员每次修改存储过程代码,都要提交给数据库管理员去审核编译,多了环节无疑会降低工作效率。要么给程序员赋予编译存储过程的权限,这样倒是提高效率了,但存在严重的安全隐患,因为编译存储过程的权限过大,程序员有可能误删数据,甚至删除其他应用的数据。其实,查询报表类业务只需要有读权限就可以了,本来不会对数据库造成误写入,但使用存储过程机制却无法避免。

不仅如此,存储过程也会造成应用间的紧耦合,其内在原因和中间表是一致的,同一个存储过程被多个应用(模块)共用导致应用间的耦合性。

大数据性能导致的尴尬

随着业务的发展数据量越来越大,查询性能随之下降,严重时还会影响生产系统。为了保证业务稳定性通常会数据分库,将历史冷数据和当期热数据分库存储,实现冷热数据分离。查询大量冷数据时不会影响生产系统,查询热数据由于数据量很小也不会对生产系统造成很大压力。

但是,冷热数据分离会导致很难完成实时数据(T+0)查询。数据库的封闭体系不允许或很难计算库外的数据,包括跨库查询。而冷热数据分离后,要查询实时数据又必须跨库。同类数据库还有一些跨库查询的手段,虽然性能很差但至少还可以实现。而实际业务中冷热数据存储的数据库类型往往并不一致,热数据在生产系统中更多使用擅长OLTP业务的RDB,而冷数据经常会采用专门面向OLAP业务的数据仓库。跨异构库查询对数据库来说就更加难以实现了。

数据库封闭性引发的这些问题会伴随技术进步不断放大,传统“有库”的方式似乎越来越难适应现代应用架构的需要。

开源集算器SPL的出现,将解决这些问题。

SPL(Structured Process Language)是专业的结构化数据计算引擎,提供了丰富的计算类库,支持过程计算,擅长完成各类复杂计算。开放计算体系支持多数据源混合计算,数据无需“入库”就可以直接计算,SPL支持热切换,提供标准JDBC接口。

开放的SPL解决方式

多样源直接计算

不同于数据库需要数据先入库再计算,SPL面对多样性数据源时可以直接计算。数据入库不仅时效性差,也无法保证数据的实时性。此外不同数据源有各自的优点,文件的IO效率很高,NoSQL可以存储文档数据,RDB计算能力较强,数据入库就无法享受这些优点了。

SPL 提供了开放的数据源支持,你听说过还是没听说过的数据源几乎都能支持,不仅可以连接取数,还可以进行跨数据源混合计算。SPL可以充分利用各类数据源的优点后,再实施跨源计算也更加高效。

在这里插入图片描述

回归ETL的本来过程

SPL拥有独立于数据库的计算能力,本身可以基于多源完成各类数据处理。这样ETL中的E和T两步都可以在库外使用SPL完成,最后将计算整理好的数据再L到数据库中,从而实现ETL本来应有的三步:E、T、L。

甚至有的时候ETL结果也可以不装载到数据库,将结果存储到文本中,或者采用SPL的私有数据格式还可以获得更高的查询性能,进一步释放数据库压力。

库外存储过程机制解决安全性

SPL的计算能力不依赖数据库,可以在库外实施计算。与存储过程类似,SPL支持过程计算,可以将任意复杂的计算拆分成多步,逐步实施。这样原来不得不依赖存储过程的两个能力(计算和分步)就完全可以使用SPL替代,实现“库外存储过程”。

库外存储过程创建和使用不需要对数据库有写权限,使用存储过程带来的安全性问题就可以有效避免。

文件替代中间表减少数据库压力并降低耦合

基于SPL的文件(多样源)计算能力,可以将以前不得不存在数据库内的中间表外置出来,存储在文件系统中,再借助SPL独立的计算能力完成中间表再计算。

从中间表的角度,也可以将SPL的实现视作“库外中间表”。保存在库外除了剥离开数据库减少数据库压力外,中间表文件还可以借助文件系统的树状结构进行管理,不同应用不同模块使用的中间表(存储过程也一样)与该应用模块一同存储,别的模块不会共用,这样就解决原来共用中间表产生的应用间耦合性问题。

冷热分离实现T+0查询

SPL提供了数据路由功能,可以根据计算需求选择对应的数据源以及跨数据源混合计算。如冷热数据分离后,基于SPL可以很方便实现全量数据查询,同时对上层应用透明就像基于一个数据库查询一样。

特别地,历史冷数据还可以存储到文件(IO快、压缩灵活、易并行)中,再借助SPL的跨源计算能力,将数据库(热数据)和文件(冷数据)混合计算就可以获得更高效的T+0查询性能。同时,使用SPL自有的高性能数据格式还可以进一步提升运算性能。

不仅如此,SPL的开放性决定了SPL很容易与现代技术架构结合。将SPL集成到微服务中就可以替代Java完成数据处理工作,在数据中心中也可以充当计算引擎实现数据处理,从而更能适应现代技术架构的需要。

SPL资料

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

6a57acb)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 24
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Ubuntu系统中,可以使用MySQL或PostgreSQL等关系型数据库来存储服务器的多个SPL(Stored Procedure Language)。 1. 首先需要在Ubuntu系统中安装MySQL或PostgreSQL数据库,可以通过以下命令进行安装: - MySQL安装命令:sudo apt-get install mysql-server - PostgreSQL安装命令:sudo apt-get install postgresql 2. 创建数据库和用户,可以通过以下命令进行创建: - MySQL创建数据库和用户命令: ``` mysql -u root -p CREATE DATABASE database_name; CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost'; ``` - PostgreSQL创建数据库和用户命令: ``` sudo -u postgres psql CREATE DATABASE database_name; CREATE USER username WITH PASSWORD 'password'; GRANT ALL PRIVILEGES ON DATABASE database_name TO username; ``` 3. 将SPL导入到数据库中,可以使用以下命令: - MySQL导入SPL命令: ``` mysql -u username -p database_name < spl_file.sql ``` - PostgreSQL导入SPL命令: ``` psql -U username -d database_name -f spl_file.sql ``` 其中,username为数据库用户,database_name为数据库名称,spl_file.sql为SPL文件名。 4. 执行SPL,可以通过以下命令执行: - MySQL执行SPL命令: ``` mysql -u username -p database_name CALL stored_procedure_name(); ``` - PostgreSQL执行SPL命令: ``` psql -U username -d database_name SELECT stored_procedure_name(); ``` 其中,stored_procedure_name为SPL名称。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值