spl(structured process language)-九游会登陆

发布时间:2018-05-28 分类:名词解释 tag:

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_day
from (
select sum(rise_or_fall) over(order by trade_date) day_no_gain
from (
select trade_date,
case when close_price>lag(close_price) over(order by trade_date) then 0
else 1 end rise_or_fall
from 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也可以用普通文本方式编写。

网站地图