当前位置:首页 > 技术分析 > 正文内容

这可能是支持数据源最多的计算技术

ruisui882周前 (04-11)技术分析13

今天,企业的数据来源已经从原来的“就几张表”发展到数据库、文件、接口、流式数据、对象存储、NoSQL……五花八门。能不能搞定“多数据源混算”,已经成了数据计算技术的重要标准之一。

说起多源混算,“逻辑数据仓库”大概是最主流的做法了。而且听起来很美:不用提前同步数据、不用折腾传统 ETL,还能用 SQL 跨库查询。

但理想丰满,现实骨感。这些逻辑数仓,以为能连天接地,真落地用的时候,发现不过是支持几个主流关系库、几个文件格式,稍微冷门一点的数据源立马就抓瞎。想搞点跨源混算?配置半天还跑不通,最后还得靠 Python 打补丁。

esProc:真正在“多数据源支持”上做对了的技术

相比于逻辑数仓那套复杂建模的“重”思路,esProc 走的是:不用建模、不隐藏数据源的“轻”机制,明确地告诉你——每个数据源我都能连,我直接读取原始数据,然后用一套统一的脚本语言 SPL 来混合计算。

听上去朴素,但效果非常强悍。

支持的数据源真多,不是“吹”出来的

esProc 的连接能力确实覆盖极广,主流数据源基本都有原生支持,按类型来看:

  • 关系数据库:Oracle、MySQL、SQL Server、PostgreSQL、SQLite、DB2……只要支持 JDBC 的,基本都能直接用;
  • 非关系数据库:MongoDB、Redis 等,不走关系模型也能玩;
  • 各种文件格式:CSV、Excel、JSON、XML、Parquet、ORC,不管结构规不规整,都能读;
  • 消息队列和流数据:Kafka 直接对接,处理流式数据也不在话下;
  • 大数据平台与对象存储:Hive、HDFS、S3 等;
  • HTTP / Web API:支持 JSON、XML 格式解析,直接从接口拉数据;
  • 其他奇奇怪怪的:Elasticsearch、InfluxDB 等也有现成封装。

比起一些“自称支持多源”的技术,esProc 这个列表不仅长,而且用起来也顺手。

不只是能连,还能混合计算,语法还挺爽

很多技术是“能连不能算”,比如某些逻辑数仓系统,Connector 接上了,但做个跨库关联写一大堆 SQL 子查询还不一定跑得通;有的嵌入式数据库像 DuckDB,虽然也能查 CSV、Parquet,但连数据库反倒犯难,像 Oracle、SQL Server 这些企业常用库却不支持;至于 Python,库虽然多,但用法乱七八糟,每种都要单独学习,根本谈不上统一接口。

而 esProc 就清爽很多:

比如做 MySQL 和 Oracle 的跨库关联:


A

1

=oracle.query("select EId,Name from employees")

2

=mysql.query("select SellerId, sum(Amount) subtotal from Orders group by SellerId")

3

=join(A1:O,SellerId; A2:E,EId)

再比如 MongoDB 混查 MySQL,结构更复杂也能轻松搞:


A

1

=connect("mysql")

2

=A1.query@x("SELECT o.order_id, o.user_id, o.order_date, oi.product_id, oi.quantity, oi.price

FROM orders o JOIN order_items oi ON o.order_id = oi.order_id

WHERE o.order_date >= CURDATE()- INTERVAL 1 MONTH")

3

=mongo_open("mongodb://127.0.0.1:27017/raqdb")

4

=mongo_shell@d(A3,

"{'find':'products',

'filter': {

'category': {'$in': ['Tablets', 'Wearables', 'Audio'] }

}}”

)

5

=A2.join@i(product_id,A4:product_id,name,brand,category,attributes)

6

=A5.groups(category;sum(price*quantity):amount)

使用对应数据源的原生语法,不仅更简单,还能充分保留原有数据源的优势。

对于习惯 SQL 的用户,esProc 还贴心提供了 SQL 支持。简单情况可以直接用 SQL,复杂情况就切回 SPL,二者混用,灵活度更高。

扩展新数据源,自己动手也不难

让 esProc 真正不同的是在“扩展数据源”这件事上做得特别轻巧。

逻辑数仓要扩展新数据源,得专门开发一个 Connector,这不是简单写个配置文件那么轻松,而是要对目标数据源的访问机制、查询语言、数据格式深度理解,再嵌入逻辑数仓框架里去对接、解析、转换,复杂度极高。用户想要基于源码自己扩展几乎不可能,需要等待厂商的支持。

而 esProc 则是统一使用 Native 接口 + 简单封装的方式来做:

  • 对于关系型数据库,直接使用 JDBC,拿来即用;
  • 对于 MongoDB、Kafka 这类非关系数据源,也是在官方驱动基础上做了轻封装。

esProc 还提供了扩展接口机制,不需要掌握底层架构,只要知道目标数据源怎么读数据、怎么格式化,基本就能做一个“Connector”级别的功能。这就意味着:esProc 本身支持的已经够多,但如果你还想支持更奇葩的数据源,自己动手也完全没压力。

不追求“透明”,但灵活度更高

逻辑数仓讲究“透明”:你写一条 SQL,底层自动调度多个数据源。但这种“透明”代价非常大,Connector 必须非常强大,很多时候一旦数据结构稍微复杂或者不规则,系统就跪了。

esProc 走的是“明确”:每个数据源你自己接,数据你自己拿回来,然后 SPL 统一处理。虽然不那么“优雅”,但灵活得多,特别适合处理非结构化、半结构化、甚至动态结构数据,逻辑复杂也能 hold 住。

透明化有好处,但也限制扩展能力; SPL 则是把“灵活可扩展”放在第一位。

融得进主流应用系统

有些计算引擎虽然好用,但难嵌入。比如 Python 库再多,在 Java 主导的企业系统里总归是“外来户”,调用不顺。

esProc 则是纯 Java 开发,部署灵活,既可以嵌入做内存计算引擎,也可以作为微服务独立运行。该集成时能集成,该独立时能独立,对企业系统友好度极高。

多,不只是种类多,更是扩展轻、用得爽

说到底,数据源支持得多,不只是“数量多”那么简单。关键是:

  • esProc 原生支持种类多,覆盖全;
  • 扩展能力强,轻封装、低门槛;
  • 写法统一,逻辑清晰,还能混合 SQL;
  • 适合各种结构数据,灵活高效;
  • 跟主流系统集成顺滑,不惹麻烦。

这几条加起来,才能撑起这句话:

esProc,可能是目前支持数据源最多的计算技术。

不仅支持得多,还支持得好、扩展得快、用得舒服。

esProc是免费的,欢迎前往乾学院下载试用!

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/3436.html

分享给朋友:

“这可能是支持数据源最多的计算技术” 的相关文章

程序员开发必会之git常用命令,git配置、拉取、提交、分支管理

整理日常开发过程中经常使用的git命令![送心]git配置SSH刚进入项目开发中,我们首先需要配置git的config、配置SSH方式拉取代码,以后就免输入账号密码了!# 按顺序执行 git config --global user.name "自己的账号" git config -...

壹啦罐罐 Android 手机里的 Xposed 都装了啥

这是少数派推出的系列专题,叫做「我的手机里都装了啥」。这个系列将邀请到不同的玩家,从他们各自的角度介绍手机中最爱的或是日常使用最频繁的 App。文章将以「每周一篇」的频率更新,内容范围会包括 iOS、Android 在内的各种平台和 App。本期继续歪楼,由少数派撰稿作者@壹啦罐罐介绍他正在使用的...

身体越柔软越好?刻苦拉伸可能反而不健康 | 果断练

坐下伸直膝盖,双手用力向前伸,再用力……比昨天前进了一厘米,又进步了! 这么努力地拉伸,每个人都有自己的目标,也许是身体健康、线条柔美、放松肌肉、体测满分,也可能为了随时劈个叉,享受一片惊呼。 不过,身体柔软,可以享受到灵活的福利,也可能付出不稳定的代价,并不是越刻苦拉伸越好。太硬或者太软,都不安全...

vue v-html动态生成的html怎么加样式/事件

1、动态生成的html,样式不生效//html 布局 <view v-html="html"> {{html}} </view> //动态生成的元素 <view class="btngo" @tap="handleLink...

虚幻引擎5.5发布

IT之家 11 月 13 日消息,虚幻引擎 5.5 现已发布。据介绍,新版本虚幻引擎在动画创作、虚拟制作和移动游戏开发方面取得进步;渲染、摄像机内视觉特效和开发人员迭代等领域的部分功能已可用于生产。IT之家整理部分功能亮点如下:动画Sequencer增强虚幻引擎的非线性动画编辑器 Sequencer...

一套代码,多端运行——使用Vue3开发兼容多平台的小程序

介绍Vue3发布已经有一段时间了,从目前来看,其生态还算可以,也已经有了各种组件库给予了支持,但是不管是Vue3还是Vue2都无法直接用来开发小程序,因此国内一些技术团队针对Vue开发了一些多端兼容运行的开发框架,今天来体验一下使用Taro来体验一下使用Vue3开发多平台运行的小程序,以便于兼容各大...