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

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

ruisui882个月前 (04-11)技术分析42

今天,企业的数据来源已经从原来的“就几张表”发展到数据库、文件、接口、流式数据、对象存储、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

分享给朋友:

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

vue 3 学习笔记 (八)——provide 和 inject 用法及原理

在父子组件传递数据时,通常使用的是 props 和 emit,父传子时,使用的是 props,如果是父组件传孙组件时,就需要先传给子组件,子组件再传给孙组件,如果多个子组件或多个孙组件使用时,就需要传很多次,会很麻烦。像这种情况,可以使用 provide 和 inject 解决这种问题,不论组件嵌套...

Vue进阶(二十六):详解router.push()

在Vue2.0路由跳转中,除了使用 <router-link> 声明式创建 a 标签来定义导航链接,还可以借助 router 的实例方法,通过编码式编写代码来实现。router.push(location)想要导航到不同的 URL,则使用 router.push 方法。这个方法会向 hi...

基于微信小程序+springboot+vue技术构建的开源微信商城

介绍基于 微信小程序 + springboot + vue 技术构建 ,支持单店铺,多店铺入驻的商城平台。项目包含 微信小程序,管理后台。基于java后台语言,已功能闭环,且达到商用标准的一套项目体系。技术栈平台功能介绍小程序演示图管理后端演示图小程序体验码演示地址1.0版演示地址说明后台管理端演示...

快来看看重构了 365 天的 vue3.5 这次到底更新了啥

新人求关注?,点击右上角 ↗? 关注,博主日更,全年无休,您的关注是我的最大的更新的动力~ 感谢大家了 就在 9 月 1 号,迭代了一年多的 Vue 3.5 终于发布了,这次发布的代号是 "天元突破 红莲螺岩"。这是一个机器人动画片的名字,相信喜欢看动漫的小伙伴应该很熟悉从更新的 C...

尤雨溪:细聊 Vue 的现在与未来

大家好,我是 Echa。创作不易,喜欢的老铁们转发加个关注,点个赞,速速收藏,谢谢!另外咱们一起回顾一下Vue 优秀开源项目:12个又简单又实用的开源项目及组件推荐13个又热门又实用的Vue开源宝典库推荐7个Vue 3的高颜值UI组件库分享15个基于Vue3.0全家桶的优秀开源项目推荐10个基于Vu...

同步电机和异步电机竟然有这么大区别,看完就理解了

同步电机和异步电机的主要区别是:同步电机能与其定子磁场旋转达到同步转速,异步电机转速达不到定子磁场的同步转速。电机大致分成三种,同步机,异步机(以上两种多与电网相连),还有个直流电机。下面的内容是一个过渡,只作为对电机(同步机、异步机)原理性的知识进行形象的讲解(懂电机的可跳过)。同步机和异步机,这...