大厂Data+Agent 秘籍:腾讯/阿里/字节解析如何提升数据分析智能。 了解详情
写点什么

MySQL 支持 JavaScript,目前处于预览阶段

作者:Renato Losio

  • 2024-01-16
    北京
  • 本文字数:1105 字

    阅读完需:约 4 分钟

MySQL 支持 JavaScript,目前处于预览阶段

最近,Oracle 宣布 MySQL 数据库服务器支持 JavaScript 函数和过程。用于存储过程的 JavaScript 目前处于预览阶段,仅适用于 MySQL 企业版和 MySQL Heatwave。


引入 JavaScript 支持让开发人员能够在数据库中实现高级的数据处理逻辑。通过最小化数据库服务器和客户端应用程序之间的数据移动,存储函数和过程可以降低延迟、网络开销和向外流量成本。Oracle 高级首席软件工程师 Øystein Grøvlen 和技术咨询委员会成员 Farhan Tauheed 写道:


支持 JavaScript 存储程序不仅可以利用庞大的生态系统来提高开发人员的生产力,而且将会有更多的开发人员具备编写存储程序所需的必要技能。换句话说,开发企业现在可以利用广泛可用的 JavaScript 技能集进行后端开发,吸纳更多的开发人才。


在常见的新特性应用场景中,Oracle 强调了数据提取、数据格式化、近似搜索、数据验证、压缩、编码和数据转换,得到了社区的积极响应。发布公告中提供了一个示例函数,JavaScript 代码直接被嵌入到 SQL 定义中:


CREATE FUNCTION gcd_js (a INT, b INT) RETURNS INTLANGUAGE JAVASCRIPT AS $$  let [x, y] = [Math.abs(a), Math.abs(b)];  while(y) [x, y] = [y, x % y];  return x;$$;
复制代码


来源:Oracle 博客


当使用传统的 CALL 语句调用函数时,SQL 类型和 JavaScript 类型之间会发生隐式类型转换。文档 提到,对 JavaScript 的支持是基于 ECMAScript 2021 标准,并支持所有整数、浮点数和 CHAR/VARCHAR* 类型变体。Grøvlen 和 Tauheed 补充道:


为实现最佳的端到端性能,MySQL 和 JavaScript 的集成使用了自定义 VM,基于 GraalVM 的 ahead-of-time(AOT)编译,将语言编译成本机二进制表示,实现快速的处理。GraalVM 有自己的 ECMAScript 2021 标准 JavaScript 实现。尽管它是用 GraalVM 的 Polyglot 框架实现的,但在性能方面仍然具有竞争力。


GraalVM 运行时包括 JDK、语言实现(JavaScript、R、Python、Ruby 和 Java)以及具有沙箱功能和工具支持的托管虚拟机。MySQL-JavaScript 可在 MySQL 企业版和 MySQL Heatwave 云服务(OCI、AWS 和 Azure)中使用,但 MySQL 社区版不提供支持。


MySQL 并不是第一个支持在存储过程中使用 JavaScript 的开源关系型数据库,PostgreSQL 使用了最为流行的 JavaScript 语言扩展 PLV8。PostgreSQL 当前所有版本均支持 PLV8,包括像 Amazon RDS 这样的托管服务,并可用在存储过程和触发器中。


Oracle 在 YouTube 发布了三个 MySQL HeatWave 视频,演示了如何使用 JavaScript 存储程序来运行 Mustache 库、验证 Web 表单输入 和 处理 Web URL。


原文链接


https://www.infoq.com/news/2024/01/mysql-javascript-procedures/


声明:本文为 InfoQ 翻译,未经许可禁止转载。


2024-01-16 08:007199

评论

发布
暂无评论
发现更多内容

模块三-学生系统详细架构设计

ASCE

SOFARegistry 源码|数据分片之核心-路由表 SlotTable 剖析

SOFAStack

GitHub 开源 程序员 开发者 源码解析

残酷春天里的中国科技(四):跨越地方保护主义

脑极体

在线YAML转HTML工具

入门小站

工具

未来几年如何把握住音视频开发的大浪潮,音视频高级开发工程师培养计划

赖猫

音视频 编程开发 音视频开发

关于缓存更新的一些可借鉴套路

架构精进之路

缓存 4月日更 4月月更

低代码开发平台能开发哪些应用?

InfoQ IT百科

软件激活码是什么?

InfoQ IT百科

基于DDD思想的技术架构战略调整

Qunar技术沙龙

DDD 构架

appdata是什么文件夹?

InfoQ IT百科

外包学生管理系统--架构详细设计方案

凯博无线

【漏洞分析】jdk9+Spring及其衍生框架

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

利用 Dio 完成数据更新的 Patch 请求

岛上码农

flutter 安卓开发 4月月更 跨平台开发 ios 开发

现在企业开发哪种APP有前景?

源字节1号

微信小程序 软件开发 前端开发 后端开发

怒肝 JavaScript 数据结构 — 队列篇

杨成功

数据结构 4月月更

怒肝 JavaScript 数据结构 — 双端队列篇

杨成功

数据结构 4月月更

不要把公司对你的要求作为目标

张泽豪

职场 观点

安卓App和鸿蒙App有什么不同?

InfoQ IT百科

趁着同事玩游戏偷偷认识k8s一家子补补课

囧么肥事

Kubernetes 容器 云原生 k8s Kubernetes 集群

极致体验,揭秘抖音背后的音视频技术

火山引擎边缘云

音视频 边缘计算 音视频技术

怒肝 JavaScript 数据结构 — 队列实战篇

杨成功

数据结构 4月月更

做 App 还是小程序好?

InfoQ IT百科

云原生新时代弄潮儿k8s凭什么在容器化方面独树一帜?

囧么肥事

Kubernetes 容器 k8s 容器服务 Kubernetes 集群

DAO社区的胜利,Tiger DAO VC胜在治理与共识

西柚子

zip格式的文件怎么打开?

InfoQ IT百科

浅析分布式系统之体系结构 技术基本目标----一致性(单对象、单操作)

snlfsnef

分布式 系统设计 基本原则 一致性 设计思想

在线CSV转XML/JSON工具

入门小站

工具

linux之fping命令

入门小站

Linux

如何隐藏电脑上的文件?

InfoQ IT百科

架构实战营作业三

热猫

DAO社区的胜利,Tiger DAO VC胜在治理与共识

小哈区块

MySQL 支持 JavaScript,目前处于预览阶段_数据库_InfoQ精选文章