写点什么

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:007144

评论

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

工业控制 词汇整理 day8

万里无云万里天

自动化 工厂运维

认证总结 SACA分析师

万里无云万里天

数据分析 认证考试

经验整理 初学51单片机建议用C语言

万里无云万里天

嵌入式 单片机 8051

联想全栈AI之海,纳智能中国的山川万物

脑极体

AI

认证总结 低压电工作业取证

万里无云万里天

低压电工 工厂运维 电工

工业控制 词汇整理 day7

万里无云万里天

自动化 工厂运维

工业控制 词汇整理 day9

万里无云万里天

自动化 工厂运维

喜报 | 极限科技获得北京市“创新型”中小企业资格认证

极限实验室

创新型中小企业 极限科技

经验整理 基于8051的数据采集系统(人文向)

万里无云万里天

嵌入式 数据采集 8051

认证总结 NCRE三级信息安全(上)

万里无云万里天

NCRE 认证总结

MYSQL深入浅出系列-MVCC并发版本控制

MySQL MVCC 数据库并发

认证总结 高压电工(运行)取证

万里无云万里天

工厂运维 电工 高压

工业控制 词汇整理 day2

万里无云万里天

自动化 工厂运维

工业控制 词汇整理 day4

万里无云万里天

自动化 工厂运维

工业控制 词汇整理 day6

万里无云万里天

自动化 工厂运维

喜报!工业物联网时序数据库 IoTDB 荣获第七届“创业北京”创业创新大赛海淀区二等奖

Apache IoTDB

喜报!工业物联网时序数据库 IoTDB 荣获第七届“创业北京”创业创新大赛海淀区二等奖

Apache IoTDB

经验整理 仓库与产线

万里无云万里天

仓库管理 工厂管理

LDO产品的基础知识解析

芯动大师

芯片 LDO 电源

电子元件笔记 知识点汇总 day1

万里无云万里天

电子元器件 工厂运维

工业控制 词汇整理 day3

万里无云万里天

自动化 工厂运维

经验整理 基于8051的数据采集系统(科技向)

万里无云万里天

嵌入式 数据采集 8051

工业控制 词汇整理 day1

万里无云万里天

自动化 工厂运维

工业控制 词汇整理 day5

万里无云万里天

自动化 工厂运维

认证总结 SACE分析专家

万里无云万里天

数据分析 考试认证

企业im(即时通讯)作为安全专属的移动数字化平台的重要工具

BeeWorks

低压电工笔记 知识点汇总 day1

万里无云万里天

低压电工 工厂运维

PLC笔记 知识点汇总 day1

万里无云万里天

PLC 工厂运维

经验整理 知识与传承

万里无云万里天

硬件 嵌入式 经验总结

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