比SQL还好用,又一门国产数据库语言诞生了
沉默王二
共 6372字,需浏览 13分钟
· 2022-05-19
数据库语言的目标
SQL 为什么不行
select max (consecutive_day)
from (select count(*) (consecutive_day
from (select sum(rise_mark) over(order by trade_date) days_no_gain
from (select trade_date,
case when closing_price>lag(closing_price) over(order by trade_date)
then 0 else 1 END rise_mark
from stock_price ) )
group by days_no_gain)
这个语句的工作原理就不解释了,反正有点绕,同学们可以自己尝试一下。
SELECT TOP 10 x FROM T ORDER BY x DESC
SPL 为什么能行
stock_price.sort(trade_date).group@i(closing_price<closing_price[-1]).max(~.len())
T.groups(;top(-10,x))
SPL 有更丰富的集合数据类型,容易描述单次遍历上实施简单聚合的高效算法,不涉及大排序动作。
其中 3 和 4 利用了离散数据集对连接运算的改造,如果仍然延用关系代数的定义(可能产生多对多),则很难实现这种低复杂的算法。
除了理论上的差异, SPL 还有许多工程层面的优势,比如更易于编写并行代码、大内存预关联提高外键连接性能等、特有的列存机制以支持随意分段并行等。
大数据时代,大家通常会对高性能计算感兴趣,这里再附一些 SPL 实现的大数据算法:
性能优化技巧:遍历复用
性能优化技巧:TopN
性能优化技巧:预关联
性能优化技巧:外键序号化
性能优化技巧:附表
性能优化技巧:单边分堆
性能优化技巧:有序分组
…….
以及一些高性能案例:
开源 SPL 优化银行预计算固定查询成实时灵活查询
开源 SPL 将银行手机账户查询的预先关联变成实时关联
开源 SPL 优化保险公司跑批优从 2 小时到 17 分钟
开源 SPL 提速银行用户画像客群交集计算 200+ 倍
开源 SPL 提速保险公司团保明细单查询 2000+ 倍
…….
评论