SPL轻量级文件存储提速查询实践

50 阅读4分钟

传统交易(TP)数据库不擅长分析计算,而专业 OLAP 数据库又过于沉重,经常需要集群,不仅成本高昂,也会使系统架构变得更复杂。

把不再变化的历史数据存储成轻量级的 esProc SPL 列存文件,可以利用 SPL 语言的强大计算能力,跑出远超传统数据库的查询性能。esProc SPL 很轻,直接嵌入应用就可以运行,在实现数据外置提速的同时,也不会让整个系统架构变得很复杂:

这里准备了一套使用 SPL 外置数据提速查询的实践方法:

第一篇 - 常规过滤及分组汇总

第二篇 - COUNT DISTINCT

第三篇 - 外键维表的关联

第四篇 - 大主子表关联

第五篇 - 大主子表关联时的 EXISTS

第六篇 - 枚举字段条件过滤

其中涉及的实例都是传统数据库很头疼的性能问题,比如 COUNT DISTINCT,外键 JOIN,大主子表关联(包括 EXISTS),枚举字段条件过滤(包括 IN)等,助您突破数据库查询性能瓶颈!

开始之前,需要做些准备工作。

**【这里】**有例子数据 csv 文件和建表 SQL,模拟某公司线下订单和电子商务的部分数据。需要在 MYSQL 数据库中建表,并导入 csv 数据。

例子表结构是这样的:

事件表 events,电商网站用户的操作事件,一千万行,包括字段:

订单表 orders,存储线下订单数据,一千万行:

订单名细表 details,存储线下订单明细数据,三千万行:

客户表 customer,存储线下客户数据,数据量较小:

城市表 city,存储线下客户所在城市数据,数据量较小:

州表 state,存储线下客户所在州数据,数据量较小:

运货商表 shipper,存储线下运货商数据,数据量较小:

下载 esProc www.esproc.com/download-es…,用标准版就可以了。

安装 esProc 后,试一下 IDE 是否可以正常访问数据库。我们以 MYSQL 数据库为例,先把 MYSQL 的 JDBC 放到目录 "[安装目录]\common\jdbc",这是 esProc 的类路径之一:

在 esProc 中建立 MYSQL 数据源,菜单栏选择 Tool-Connect to Data Source,配置 MySQL 标准 JDBC 连接,名字是 speed:

返回到数据源界面并连接刚才配置的数据源,如果数据源名变成粉色,说明配置成功。

在 IDE 中新建脚本,编写 SPL 语句,连接数据库,通过 SQL 加载 orders 表的数据。

SPL 代码 1:

按 ctrl-F9 或单击执行按钮后,点击 A2 格,在右边可以看到 100 条数据。

SPL 代码写在单元格中,可以直接用格名作为临时变量。

如果遇到问题可以查阅教程和函数参考:

教程地址:d.raqsoft.com.cn:6443/esproc/tuto…

函数参考:d.raqsoft.com.cn:6443/esproc/func…

实践使用的测试环境是 VMWARE 虚拟机,8 核 CPU,8G 内存,SSD 硬盘,操作系统是 Win11,MYSQL 版本是 8.0,esProc SPL 是标准版。