spl(structured process language)-九游会登陆
spl(structured process language)是一种面向结构化数据计算处理的程序设计语言,spl可以读作[sipl]。
在spl出现之前,sql是结构化数据查询和运算的主流程序语言,但由于其理论基础关系代数的限制,sql在实现复杂过程式及有序运算时非常繁琐,代码非常冗长而难以维护,对于复杂运算也很难获得高性能,常常严重依赖于数据库的优化机制。而且,sql作为关系数据库的伴生品,也继承了数据库的封闭性,很难把sql的计算能力应用到数据库之外的数据上。
为解决sql的各项困难,自2008年起,中国润乾公司开始研究不基于关系代数的结构化数据计算体系,经过多年反复尝试,提出离散数据集模型,并基于该理论发展出spl及采用spl语法的计算产品集算器。
与sql相比,spl最大的不同是面向复杂过程式运算,而不是简单查询。其理论基础离散数据集特别强调数据离散性与集合化的统一,使得spl很容易实现有序计算、定位计算以及更复杂的集合运算。另外,spl还强调开放性,并不绑定在某种数据库中,而是作为一种独立的程序设计语言出来,因而可以方便地处理数据库之外的数据,如文件、互联网数据,以及跨数据库计算。
与sql类似的是,spl也是面向结构化数据,因而在命名时也采用了和sql类似的缩写。不过,虽然spl可以作为sql在复杂计算方面的进化版,但因为是面向过程运算,需要对分步及循环分支等逻辑控制有更好的支持,所以spl没有再延用sql类英语的语法风格,而是采用了其它高级程序设计语言的语句、函数风格语法,其代码更象是java、basic等语言。
一段spl与sql的代码对比示例:计算一支股票最长连续上涨了多少天
sql缺乏离散性,对有序运算支持繁琐,需要多层嵌套才能完成,代码冗长难懂
select max(consecutive_day-1)from (select count(*) consecutive_dayfrom (select sum(rise_or_fall) over(order by trade_date) day_no_gainfrom (select trade_date,case when close_price>lag(close_price) over(order by trade_date) then 0else 1 end rise_or_fallfrom stock_price))group by day_no_gain)
spl对离散性支持很好,代码符合常规思维,简单易懂
a | |
1 |
=stock_price.sort(trade_date)
|
2 |
=0
|
3 |
=a1.max(a2=if(close_price>close_price[-1],a2 1,0))
|
spl代码习惯于被写在表格中,可以直接引用格名作为变量,也容易看出分步运算的风格。当然,spl也可以用普通文本方式编写。