冷热混合计算对于常见的冷热分库T+0查询场景,SPL实现很简单,这里看一个例子 。

文章插图
本例中,Oracle作为生产库存储当期热数据,MySQL存储历史冷数据 。前端传入一句标准SQL(A2),再借助SPL的转换功能将标准SQL转换成对应数据库的语法(B3)并发给数据库查询(B4),最后归并结果进行最后的汇总运算(A5) 。这里使用了多线程并行方式(A3)同时执行两个SQL,效率更高 。
在这里,SPL不仅完成了两个数据库的跨库查询,还提供了SQL转换方法,更利于前端应用使用,同时拥有合并两个数据库计算结果后的继续计算能力,本例是分组汇总 。SPL还有更丰富的结构化数据对象及其上的丰富运算,除了分组汇总、循环分支、排序过滤、集合运算等基础计算外,位置计算、排序排名、不规则分组也不在话下 。

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

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

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

文章插图
将历史数据存储在文件后与生产库混合查询,历史数据使用游标可以支持大数据场景,A4针对文件游标进行分组汇总,A5归并数据并汇总分组结果 。这里使用了SPL提供的二进制集文件(btx),相对文本更加高效 。集文件采用了压缩技术(占用空间更小读取更快),存储了数据类型(无需解析数据类型读取更快),支持可追加数据的倍增分段机制,利用分段策略很容易实现并行计算,保证计算性能 。
SPL还有另外一种支持列存的高效存储形式组表,在参与计算的列数(字段)较少时会有巨大优势 。组表上还实现了minmax索引,也支持倍增分段,这样不仅能享受到列存的优势,也更容易并行提升计算性能 。
SPL还支持各种高性能算法 。比如常见的TopN运算,在SPL中TopN被理解为聚合运算,这样可以将高复杂度的排序转换成低复杂度的聚合运算,而且很还能扩展应用范围 。
经验总结扩展阅读
- 姐夫的姐夫如何称呼
- 深空之眼流萤岚雾休刻印如何搭配比较合适
- ipad如何分屏工作(ipad微信分屏怎么取消)
- ipad如何左右分屏(ipadcanvas上下分屏)
- ipad如何打开分屏模式(ipad如何关联分屏模式)
- TCP 序列号和确认号是如何变化的?
- 如何通过 C#/VB.NET 重命名 Excel 表格并设置选项卡颜色
- 2023年摩羯座财运1月运程详解如何提高
- 81年属鸡今年多大了2023 81年属鸡2023年运势发如何
- 2023年属鼠逢兔年运势如何