传统交易(TP)数据库不擅长分析计算,而专业 OLAP 数据库又过于沉重,经常需要集群,不仅成本高昂,也会使系统架构变得更复杂。
把不再变化的历史数据存储成轻量级的 esProc SPL 列存文件,可以利用 SPL 语言的强大计算能力,跑出远超传统数据库的查询性能。esProc SPL 很轻,直接嵌入应用就可以运行,在实现数据外置提速的同时,也不会让整个系统架构变得很复杂:
这里准备了一套使用 SPL 外置数据提速查询的实践方法:
其中涉及的实例都是传统数据库很头疼的性能问题,比如 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 是标准版。