SQL 行模式识别(MATCH_RECOGNIZE)能够用于检测数据流中的复杂模式,具有处理复杂事件(CEP)的强大功能 。常见的应用包括侦测异常的安全行为、发现金融交易行为模式、欺诈检测和传感器数据分析等 。
2019 年 SQL 标准增加了第 15 部分:ISO/IEC 9075-15:2019 多维数组(SQL/MDA) 。
三.SQL 与多维数组
多维数组(Multi-Dimensional Arrays)是各种科学和工程数据的核心基础结构,包括一维传感器数据、二维卫星和显微镜扫描图像、三维图像时间序列和地球物理数据、以及四维气候和海洋数据等 。
大部分的编程语言,例如 C/C++、JAVA、Python、R 等,都提供了数组类型和相关操作的支持 。早在 1999 年,SQL 就已经对数组提供了一些非常基本的支持;最新的 SQL/MDA 允许存储、访问和处理大规模的多维数组,例如 N 通道的卫星图像 。这意味着 SQL 现在可以解码图像,并且通过像素坐标直接访问和处理图像区域 。
文章插图
其中,MDA 表示在数据库之外的数组数据,支持格式包括 TIFF、netCDF、HDF5、JSON 等;SQL/MDA 表示数据库中存储的数组数据,支持的操作包括:
- 数组数据的摄取和存储;
- 更新存储的数组数据;
- 导出数组;
- 数组和关系数据的集成查询 。
CREATE TABLE sal_emp ( name text, pay_by_quarter integer[], schedule text[][]);INSERT INTO sal_emp VALUES ('Bill', '{10000, 10000, 10000, 10000}', '{{"meeting", "lunch"}, {"training", "presentation"}}');INSERT INTO sal_emp VALUES ('Carol', ARRAY[20000, 25000, 25000, 25000], ARRAY[['breakfast', 'consulting'], ['meeting', 'lunch']]);
sal_emp 表中包含两个数组字段,pay_by_quarter 是一个一维数组,schedule 是一个二维数组 。以下查询返回了 Bill 一周中的前两天计划里的第一项内容:
select schedule[1:2][1:1] from sal_emp where name = 'bill';name |-----|Carol|
使用下标可以访问数组的元素,PostgreSQL 中的数组元素从 1 开始编号 。以下语句用于修改数组中的数据切片:update sal_emp set pay_by_quarter[1:2] = '{27000,27000}'where name = 'carol';
PostgreSQL 为数组数据提供许多函数和运算符,例如以下查询使用 && 运算符查找曾经拿过 10000 报酬的员工:select name from sal_emp where pay_by_quarter && array[10000];name|----|Bill|
unnest 函数可以将数组转换为关系表,例如:select name, unnest(pay_by_quarter), unnest(schedule) from sal_emp;name |unnest|unnest |-----|------|------------|Bill | 10000|meeting |Bill | 10000|lunch |Bill | 10000|training |Bill | 10000|presentation|Carol| 20000|breakfast |Carol| 25000|consulting |Carol| 25000|meeting |Carol| 25000|lunch |
PostgreSQL 还为数组提供了 GiST 和 GIN 类型的索引,可以优化数组数据的查询 。除此之外,基于 PostgreSQL 的 PostGIS Raster、Oracle GeoRaster 以及 rasdaman 数组数据库则提供了更加完善的多维数组应用场景支持 。
四.SQL 与图形数据库
图形数据库(graph database)属于 NoSQL 的一种,使用节点、边和属性来表示和存储数据,使用图结构进行语义查询 。图形数据库非常适合社交网络、人工智能、欺诈检测、推荐系统等领域中的复杂关系处理 。Neo4j 是目前最著名的图形数据库 。
文章插图
2019 年 9 月 17 图形查询语言(GQL)成为了继 SQL 之后另一种新的 ISO 标准数据库查询语言 。与此同时,SQL 标准将会出现一个新的第 16 部分(SQL/PGQ)(Property Graph Query),在 SQL 中直接提供一些 GQL 功能 。
推荐阅读
- iOS|iOS 16前的最后一个版本!iOS 15.5登场:一文了解详情
- 打通前后端,这款效能提升开源“神器”你一定要了解
- 一文读懂Redis的dict字典数据结构
- 新疆维吾尔自治区|一文带你了解和田玉“前世今生”
- ARM|AMD|X86/i386|AARCH64 #了解一下#操作系统:CPU架构
- 深入了解定制 Bash
- 使用Java带你打造一款简单的外卖系统
- 满族姓氏文化你了解多少
- 痛风饮食治疗注意事项
- 上海市|现在不要去上海这边打工,为什么呢?相信大家都了解