
文章插图
除了RDB , 对于有些场景涉及的NoSQL、Hadoop等数据源也能支持,SPL具备多源混算能力,无论基于何种数据源都可以进行混合查询实现T+0 。比如MongoDB与MySQL混合查询:

文章插图
SPL的计算能力还能用于ETL,将生产数据转移到历史库中,还经常伴随一些转换计算,这些都可以使用SPL来完成 。比如出于某些原因,要将生产数据某些编码字段通过某个对照表转换成另一种编码(遵守一致性的编码规则、整理数据类型获得更好性能等),而对照表通常并不会存在生产库中,而不能直接在生产库中计算好,这就涉及多数据源计算了 。

文章插图
高性能历史冷数据量可能很大,使用RDB存储容易受到资源容量等因素限制 , 而且数据读取效率很差 。相比之下,文件存储具备很多优势,不仅读取效率更高,还可以有效利用文件压缩、并行等机制提速,同时也不会像数据库容易受到容量的限制 。不过 , 开放的文本格式使用效率不高(无压缩、解析数据类型慢等),一般会使用二进制格式文件 。另外,文件存储的最大问题是没有计算能力,不像数据库使用SQL可以很方便完成数据处理,通过硬编码处理的难度很大 。
这些问题都可以通过SPL来解决,SPL提供了两种高性能二进制数据存储格式集文件和组表 , 再借助SPL的独立计算能力可以直接基于文件和数据库混合计算实现高效T+0查询 。比如前面的例子,可以使用SPL文件存储历史冷数据与生产库热数据混合查询 。

文章插图
将历史数据存储在文件后与生产库混合查询,历史数据使用游标可以支持大数据场景,A4针对文件游标进行分组汇总,A5归并数据并汇总分组结果 。这里使用了SPL提供的二进制集文件(btx),相对文本更加高效 。集文件采用了压缩技术(占用空间更小读取更快),存储了数据类型(无需解析数据类型读取更快),支持可追加数据的倍增分段机制,利用分段策略很容易实现并行计算 , 保证计算性能 。
SPL还有另外一种支持列存的高效存储形式组表,在参与计算的列数(字段)较少时会有巨大优势 。组表上还实现了minmax索引,也支持倍增分段 , 这样不仅能享受到列存的优势,也更容易并行提升计算性能 。
SPL还支持各种高性能算法 。比如常见的TopN运算 , 在SPL中TopN被理解为聚合运算,这样可以将高复杂度的排序转换成低复杂度的聚合运算,而且很还能扩展应用范围 。

文章插图
这里的语句中没有排序字样 , 也不会产生大排序的动作,在全集还是分组中计算TopN的语法基本一致,而且都会有较高的性能,类似的算法在SPL中还有很多 。
SPL也很容易实施并行计算,发挥多CPU的优势 。SPL有很多计算函数都提供并行机制,如文件读取、过滤、排序只要增加一个@m选项就可以自动实施并行计算,简单方便 。
易集成SPL封装了标准JDBC和ODBC接口供应用调用,特别对于Java应用可以将SPL嵌入应用内使用,T+0查询能力在应用端实现,不再依赖数据源 , 这样可以充分解耦应用与数据源,获得很好的移植性和可扩展性 。
JDBC调用SPL 代码示例:
Class.forName("com.esproc.jdbc.InternalDriver");Connection conn =DriverManager.getConnection("jdbc:esproc:local://");Statement st = connection.();CallableStatement st = conn.prepareCall("{call splscript(?, ?)}");st.setObject(1, 3000);st.setObject(2, 5000);ResultSet result=st.execute();SPL是解释执行的,天然支持热切换 。基于SPL的数据计算逻辑编写、修改后不需要重启,实时生效,使开发运维更加便捷 。
相对其它T+0实现技术 , SPL借助自身独立的强计算与跨数据源计算能力可以更方便完成T+0查询,同时提供的高性能存储和高性能算法可以充分保障查询效率,良好的集成性使得应用端可以轻松具备这些能力,是名副其实的T+0查询利器 。
参考资料
- SPL下载
- SPL源代码
推荐阅读
- 深空之眼流萤岚雾休刻印如何搭配比较合适
- dnf冒险团角色冒险如何升战力(冒险团冒险角色战斗力)
- 如何下载视频保存到本地相册(优酷视频保存到相册)
- TCP 序列号和确认号是如何变化的?
- 如何通过 C#/VB.NET 重命名 Excel 表格并设置选项卡颜色
- ipad如何分屏工作(ipad微信分屏怎么取消)
- ipad如何左右分屏(ipadcanvas上下分屏)
- ipad如何打开分屏模式(ipad如何关联分屏模式)
- 零基础如何学游戏编程(游戏编程学习入门)
- 小米11屏幕发黄怎么回事?小米11屏幕发黄怎么解决?