在当前数字化转型的大背景下,数据和 AI 已然成为了企业生存和发展的必备生产要素。作为支撑所有上层技术的根基,编程语言近年来越来越趋向领域化,而大数据和 AI 的蓬勃发展,必然需要一个更加为之量身定制的语言,以 SQLFlow、MLSQL 为代表的这类语言的诞生正是顺应了这个趋势。本文,InfoQ 有幸采访到了【DIVE全球基础软件创新大会2021】编程语言新风向专场讲师、Kyligence 技术合伙人/资深数据架构师、MLSQL 作者祝海林,听他分享当前大背景下我们为什么需要一门面向大数据和 AI 的编程语言。
MLSQL 从无到有,都经历了什么?
MLSQL 语言是人工智能、大数据、云计算三者融合之下的时代需求产物,传统语言难以胜任这些新的需求。
InfoQ:首先请您介绍下现在所负责的工作吧?
我现在在 Kyligence 主要负责 MLSQL 开源相关的工作,目前已经构建起了一支专职的开源团队。随着团队的全职人员不断扩充,也说明了我们公司对开源投入很大,也很有信心。另外,这个团队我们还在继续招人。
InfoQ:作为 MLSQL 的作者,您设计这门语言的初衷是什么?它诞生的背景是怎样的?
祝海林:天下武功,唯“快”不破。 这个快又包含了两个层面。第一个是,我的软件够快,比如 Kyligence 旗下的开源项目 Kylin 就在 OLAP 层面做到了极致的快,能对大数据做到亚秒级的查询速度。第二个是,软件使用者效率快,也就是基于这个系统,使用者能够高效率地完成自己的任务和工作,原本要一周能完成的事情,现在可以两小时就完成,从而让生活变得更加简单。
MLSQL 的出发点是第二个,我们希望随着人工智能、大数据、云计算的发展,在这个大的技术发展环境下,用户可以用一个语言,一个引擎就能在云上、云下涵盖AI/Big Data的所有任务,比如 OLAP 查询、ETL 处理、流批一体、机器学习等等。这个语言必须足够简单,能够让大多数人接受,这个引擎也必须足够简单,能够轻易被维护。而在 MLSQL 之前,用户往往需要众多的系统和语言进行组合,才能完成复杂的大数据和 AI 任务的,这极大地降低了使用者的效率,提高了维护成本,使得大数据和 AI 难以真正走入寻常百姓家。
InfoQ:MLSQL 的定位是一门面向大数据和 AI 的语言,那它和其他语言有什么区别?
祝海林:MLSQL 语言是人工智能、大数据、云计算三者融合之下的时代需求产物,传统语言难以胜任这些新的需求。
首先,MLSQL 这个语言天然是分布式执行的,大部分传统语言比如 Python、Java 必须依赖框架以及新的编程范式才能完成分布式。典型的如 Java 的虚拟机(执行引擎)就是单机的,语言也是单机的,你必须依赖 Spark 这种框架,学习它的分布式编程范式,你才能进行分布式数据处理。
第二,传统语言对于用户来说入门太难了,原因在于它还是太“底层了”。真正效率高的是什么语言? 是声明式语言,比如 SQL,还有比如命令行。声明式语言,不用你在编程的时候关注和业务逻辑没关系的东西,你只要描述你的任务是什么,其他的比如任务如何生成,如何拆解和执行,都是底层语言引擎需要做的事情。这样才能让更多的人使用起来。毕竟,会 SQL 的人肯定比会Python的人多,对不对?
第三,新时代,我们不再要求语言必须有那种纳秒、微秒级别的响应时间了。比如在做大数据分析、ETL、亦或是 AI 的时候,我们大体都是毫秒级,秒级或者以上其实都是可以接受的。这个时候,分布式的解释型语言就很有价值了,虽然没办法做到纳秒、微秒级别的执行速度,但是在可接受范围内,它比传统语言更易用。
第四,传统语言都没有在语言层面提供安全能力。比如哪些语法,哪些特性可以针对指定用户开启或关闭。MLSQL 在设计之初就提供了这种能力,比如用户可不可以使用 MLSQL 里的 load 语句加载数据,能加载什么数据,加载的数据的哪些列,哪些行,要不要执行脱敏策略等等,都被内置在语言层面。
还有就是扩展性问题,传统语言语法以及对语言引擎(VM)做扩展,是有很高的门槛的。MLSQL 执行引擎是使用 Scala/Java 开发的,而且设计的时候就是插件内核,我们可以很轻易的通过插件机制扩展 MLSQL 的语法,或者增强执行引擎的能力。
MLSQL 就是这么一门面向大数据和 AI 设计的声明式云原生语言,以 SQL 为主体,保留了其分布式,声明式特性,同时弥补了原生 SQL 可编程性的不足。在保证足够简单,同时又可以高度灵活的情况下,让用户更好的玩转数据,所见即所得。
InfoQ:MLSQL 发展至今,经过了哪些迭代?
祝海林:最早 MLSQL 是为了使用 SQL 解决 ETL 而诞生的,后面我们覆盖到了流,到后来,我们发现还可以做 OLAP 查询服务,再后来,我们发现我们还可以完成机器学习的工作,很惊喜的是,不仅可以做到,效果还相当的好。
在这期间,我们给 SQL 添加变量,分支语句,函数,模块等标准语言的支持,同时还拥抱了 Python 语言(语言内置了 Python 脚本执行引擎)从而具备拥抱更大的 AI 生态的能力。到这个时候,我们就发现,MLSQL 已经有一个语言的完整形态了,可以解决大数据和 AI 领域的大多数问题。
MLSQL 的技术挑战及未来规划
开源还是挺费钱的,尤其是人力方面。
InfoQ:您做一门编程语言并不容易,您在做 MLSQL 时是否遇到了技术上的挑战?这期间有没有让您印象深刻的事件?
祝海林:挑战肯定是有的。一个比较典型的例子是,MLSQL 涉及的技术点太多了,作为开发者来说要把这些技术点都做好,这就非常有挑战了。
比如在开发 MLSQL 的过程中,为了展示 MLSQL 的能力,我们需要一个好的 Web 端,这个时候我就重新去学 JavaScript/TypeScript,使用 ReactJs 去开发了一套 Web Console,为了能够在桌面上使用,我学习 VSCode 扩展开发,开发了 VSCode MLSQL Lang 插件,为了能够把它更好地部署到 K8s 上,我学习Go语言,开发了 mlsql-deploy, 为了能够支持分支语句,我用 Scala 手写了一套表达式引擎,从词法分析,到语法分析,到最后生成目标代码全部自己实现了一遍。
除此之外,各种大数据技术你都要有一定的掌控,融入进来,这才能做到让大家开箱即得,这包括诸如 CDC(我们支持 MySQL/HBase)、数据湖(Delta Lake)、物化视图、聚合下推等等大数据相关技术。
印象中,倒是没有遇到技术上比较深刻的事情,但是有一个很深的感觉就是,现代软件的复杂度太高了,一个人的时间是怎么着都不够的,无论你的精力和速度有多快。除非你是做那种小而美的软件,解决一个非常领域化的问题,才可能持续单兵作战。
InfoQ:那 MLSQL 又是如何做推广的?单纯依靠社区的力量是不够的吧?是不是在资金上也投入巨大?
祝海林:我们的推广其实非常之少,开源后,如果这门语言确实解决了一些问题,并且能够给用户带来收益,那么就会有更多的用户愿意去尝试。很多用户都用了几年后,突然某天在群里提了一嘴,我才知道,竟然有用这么久的用户了。
在我加入 Kyligence 前的这些年,主要时间都花在了架构设计和代码开发上,用于宣传的时间非常少,偶尔去参加一些 meetup 做个分享,或者给一些公司做个布道,这期间也得到了很多国内媒体的帮助,他们也愿意支持像我这样的项目,很是感谢。
MLSQL 的推广单纯依靠社区的自然生长确实是不够的,而且宣传这个东西,是需要有一定的财力支持的。比如我做官网,自己掏钱买了云主机,买了域名,然后我发现我买不起 https 认证,尽管我一直想搭建一个线上的体验服务,让用户可以直接体验 MLSQL 语言,但是考虑到昂贵的费用(大数据嘛,机器配置要求略高)一直没有买,这个时候虽然时不时会有用户会提供机器支援,但很不稳定,这对于宣传其实是很负面的。
所以我个人认为,开源项目最好还是后面能有一家公司做支持。国外的很多开源项目虽然没有公司支持,但是有基金会支持。总之,开源还是挺费钱的,尤其是人力方面。
InfoQ:您对 MLSQL 的未来规划是怎样的?
祝海林:远景目标是,MLSQL 能够成为大数据和 AI 的标准语言,同时实现数据的平民化,帮助中小企业非常低成本的落地大数据和 AI。我们现在正在努力将其打造成一个可信赖的产品,这包括易用性、性能、稳定性、安全等方方面面。
加入 Kyligence,从朋友圈好友走向事业合伙人
我们希望从语言这种更底层的方式,去更普世化地解决一些问题,让大数据和 AI 变得更简单,更加平民化。
InfoQ:前些年您一直在埋头苦干搞 MLSQL,那又是什么样的契机让您选择加入 Kyligence?
祝海林:MLSQL 是我 16 年在北京的时候开源出来的,后面来到了杭州,经过五年的努力,MLSQL 已经有一定的成熟度,也有不少小创新,在很多公司得到了应用实践,不少互联网公司也借鉴了 MLSQL 的很多理念。
这个时候我觉得 MLSQL 如果一直作为一个个人开发者的作品,会影响它的发展,我希望它能踏入一个新的快车道。我和Kyligence CEO 韩卿先生是很多年的“微信朋友圈好友”,这个时候他经过长时间的观察,也颇看好 MLSQL, 而在我看来,Kyligence 也是一家非常优秀的拥有开源社区运营经验的公司,所以我们很快一拍即合,最后 2021 年的时候,我以技术合伙人的身份加入了 Kyligence。
InfoQ:您加入 Kyligence 后,MLSQL 在 Kyligence 的业务板块里发挥了怎样的作用?
祝海林:Kyligence 一直都对开源项目有着较大的投入,Kylin 已经进入 Apache 很多年,而且也获得很大的成功。总体来看,Kylin 以强大的分析能力和丰富的周边生态而备受欢迎,Kylin 其实是非常好地覆盖了 BI 这一部分,部分覆盖 ETL/ML。那 MLSQL 则是很好地覆盖了 ETL/ML,部分覆盖了 BI ,所以两者具有很好的互补性。第二点,我们公司也尝试从语言层面去解决大数据和 AI 领域的问题。可能以前大部分还是从应用产品或者组件的方式去切入,这种方式的缺点是解决问题更像打地鼠,出现一个问题,用一个框架或者产品去解决。我们现在是希望能够通过这种更底层的方式,去更普世化地解决一些问题,让大数据和 AI 变得更简单,更加平民化。
InfoQ:目前 MLSQL 的市场接受情况是怎样的?是否达到了您的预期?
祝海林:对于 MLSQL,用过的都说好。好些用户都是三年以上老用户了,唯一不足的是,一线互联网公司很少有用的。不过因为之前在社区方面没有做太多工作,甚至从来没有组织过任何活动,属于完全放养状态,所以用户数也在预料之中。今年(2021 年)开始,在公司的支持下,我已经在规划这方面的工作了。在十月、十一月,我们很快会有很多新的社区工作落地,这包括新的官网、10 月底线下的 MLSQL meetup、线上体验版,还有专门的公众号,知乎专栏等等。我对未来还是充满信心的,这五年技术的发展也让我愈发相信 MLSQL 的技术路线是走对的。
嘉宾介绍:
祝海林,Kyligence 技术合伙人/资深数据架构师、MLSQL 作者,拥有 13+年研发经验。最近几年专注在 Data + AI 融合方向上,致力于帮助企业更好落地 Data/AI。
祝海林老师将在 InfoQ 举办的首届【DIVE全球基础软件创新大会2021】上分享《面向 Data 和 AI 的语言 MLSQL》的主题演讲。无论是企业还是一线研发人员,都可以通过 MLSQL 更好地去落地大数据和 AI。
当前,数据库、操作系统、中间件、编程语言……各个行业不断变化,但时势造英雄。基础软件发展的“黄金时代”中,怎么成为行业“英雄”?
阿里云李三红、PingCAP 黄东旭、MegaEase 陈皓,还有信通院、统信软件、极狐、清华大学、红杉资本等各个行业的专家学者,一起讲述行业变化,更要明析时代大势下蕴含的无限机会!点击此次,看看还有谁在等着你吧!
评论