先来看看两者的定义。
SQL:结构化查询语言。
SPL:结构化数据计算语言。
既然是比较文章,那必然是要突出一方的优势。
以下是SQL的痛点以及SPL的优点:
1.SQL缺乏离散性,集合化不彻底;SPL离散与集合充分结合。
2.SQL有序计算支持得很不好;SPL有序计算非常强。
3.SQL不提倡分步计算(对于复杂运算的代码冗长难写);SPL则提倡分步计算(擅长实现复杂运算)。
4.SQL难以实现高性能算法(无法充分利用硬件能力);SPL拥有高性能基础算法和存储机制(充分利用硬件能力)。
5.SQL只能计算数据库中的数据;SPL可以计算任意数据源。
6.数据库的计算能力是封闭的,无法处理数据库外的数据,常常需要先做ETL导入同一个数据库后才能处理。 SPL提供了开放简易的计算能力,可以直接读取多个数据库实现混合数据计算,协助数据库做更好的运算。
7.SQL难以实现高性能算法,大数据运算性能只能指望数据库的优化引擎,但复杂情况常常靠不住。
SPL提供大量基础高性能算法(有许多是业界创新)以及高效的存储格式,同等硬件环境下可以获得远超过数据库的运算性能,可以全面替代大数据平台与数据仓库。
- 内存查找:二分法、序号定位、位置索引、哈希索引、多层序号定位
- 外存数据集: 文本文件并行、二进制存、倍增分段、列存组表、有序存储与更新
- 外存查找:二分法、哈希索引、排序索引、行存和带值索引、索引预加载、批量查找与集合查找、多索引归并、全文检索
- 遍历技术:游标后过滤、遍历复用、并行遍历与多路游标、聚合扩展、有序遍历、程序游标、半序分组与排序、序号分组与可控分段
- 关联技术:外键地址化、外键序号化、索引复用、对位序列、大维表查找、单边分堆、有序归并、关联定位、附表
- 多维分析:预汇总与时间段预汇总、对位序列、标签位维度
- 分布式:自由计算与数据分布、集群复组表、集群维表、冗余式容错、备胎式容错、Fork-Reduce、多作业负载均衡
8.工业场景中有大量时序数据,而时序数据库常常只提供SQL,SQL的有序计算能力本来很弱,结果只用于取数,无法协助计算。
工业场景中还常常会涉及许多基础数学运算,SQL缺乏这些函数,只能读出来再处理。
SPL能很好地支持有序计算,而且提供了丰富的数学函数,如矩阵、拟合等,能够更方便地应对工业场景的计算需求。
- 时序游标:按粒度聚合、平移、相邻引用、关联合并
- 历史数据压缩固化,透明引用
- 向量与矩阵运算
- 各种线性拟合:最小二乘、偏最小二乘、lasso、ridge、…
SPL技术介绍:
- 1、简洁易用的开发环境
- 2、专门设计的语法体系
- 3、丰富的运算类库
- 4、多样性数据源
- 5、外部数据接口
- 6、集成性
- 7、热切换
- 8、多线程并行
- 9、高性能存储
- 10、分布式计算
总结:
SPL over SQL,什么时候能用上SPL啊,我不想再写冗长复杂的SQL了!