SQL还是那个SQL么?
前言
今天MLSQL群里有个小伙伴问到,能把Spark, Flink 这些框架运行在黑莓上么?
我回答道:可以作为一个内置SQL计算引擎嵌入(不是数据库),其他可能没啥用了。
不过这又引起了我的另外两个思考,第一个是,Spark真的能(或者有必要)跑在移动设备上么?第二个问题是,在传统Web/App开发领域,SQL只是数据库的一个操作语言(DSL),但是在大数据里,SQL已经远远超越了数据库操作语言的范畴,而是数据处理的标准语言,而在MLSQL中,SQL被发挥到极致,是一切数据处理的核心语言,无论爬虫,数据处理,流式,ML(AI)都是用SQL做交互的。 那么为什么在大数据领域SQL会有这种变革呢而在Web/App开发领域没有这种事情发生呢?
Spark真的能(或者有必要)跑在移动设备上么
首先,Spark经过改造完全可以跑在移动设备上的,其次是这也是有必要的。之前跟挖财的小伙伴交流,他们用改造过的Spark引擎可以把一些小数据量的复杂SQL计算缩小到几毫秒,那么如果将该引擎移植到Ios/Android/BlackBerry, 根据我前面提到的第二个思考,我们不再把SQL当做一个数据库操作语言,而是数据处理语言,我在移动设备上完全可以把数据处理全部换到spark引擎上,而且可以实现处理逻辑的热升级(手机端连接服务器,更新SQL脚本)就能更新数据处理逻辑。会不会功耗过高?几毫秒的CPU(GPU/AI芯片)而已。
对 Web/App小伙伴思维模式的冲击
我们知道以前在做Web的时候,分库分表的痛点是查询的时候很难受。而早期Spark无法被Web/App的小伙伴使用,因为他做不到毫秒级的计算延迟。但是有针对性的对Spark做优化(不再针对大数据,而是针对Web/App),得益于Spark的多数据源支持,以及高效的SQL计算引擎,分表分库查询不在是噩梦,我们可以轻易实现。事实上,tidb已经是这么做的了。这是以第一点。
第二点是,很多业务处理环节,是不是都能通过SQL来处理呢?不能说大部分,但是应该相当一部分是可以不用写代码了,而是通过SQL来完成的,那这也意味着,我们可以热更新的好处。所有数据处理无非如下三种模式:
image.png而在MLSQL里,我们甚至对API也用SQL做了抽象:
image.png最后的实现效果如下:
image.png我们会用sql对传递进来的data的每条内容中的feature字段进行处理,得到的结果也会是一张表。
结论
- SQL可以在Web/App 领域进一步发扬光大,就像他在大数据里一样。
- Spark 团队可以考虑将Spark移植到Web/App领域。
- 期待挖财团队的新开源项目。