开工福利|免费学 2200+ 精品线上课,企业成员人人可得! 了解详情
写点什么

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

评论

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

一个Camel Multicast组件聚合策略问题的解决过程

华为云开发者联盟

消息 Apache Camel Multicast 组件 Multicast 子路径

企业如何通过迁移到云平台来减少开支

云计算

逛街时偶然发现的阿里P8Java成长笔记,竟然在Github上标星90K+

Java 架构 面试 程序人生 编程语言

面试失败总结,这577道LeetCode题Java版答案你值得拥有

Java 架构 面试 程序人生 编程语言

「人工智能科普系列」【29】人类将如何变革--走出金字塔模型(上)

Databri_AI

人工智能

腾讯面试聊到的几种存储虚拟化

hanaper

操作系统虚拟化VMware, Citrix, Hyper-v比较

hanaper

“无用发明家”告诉你,5G推开了三重门

脑极体

记一次Kafka服务器宕机的真实经历!!

冰河

Docker kafka 运维 服务器 消息队列

浅谈云上攻防--SSRF漏洞带来的新威胁

腾讯安全云鼎实验室

漏洞分析 SSRF

C++ 20语言特性

赖猫

c++ 后台开发 后端

从坐席到外呼,明道云与品聘云呼叫对接示例

明道云

如何绕过WAF和本地防火墙双重防护?

网络安全学海

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

如何绘制一个仪表盘

Changing Lin

android 10月月更

DBeaver

soap said

开发工具 数据库客户端

【案例】云链智运携手百度OCR,实现货运物流智能化升级

百度大脑

人工智能

云原生消息、事件、流超融合平台——RocketMQ 5.0 初探

阿里巴巴中间件

阿里云 RocketMQ 云原生 中间件 消息

研发应用--Prometheus

en

Prometheus

研发效能度量引发的血案

CODING DevOps

DevOps 团队协作 研发效能 腾讯云 CIF 峰会 度量

阿里P8呕心沥血整理出这份32W字Java面试手册,竟然在Github上标星80K+

Java 架构 面试 程序人生 编程语言

想不明白!Github上竟然有阿里专家仅凭800页MySQL笔记火了

Java 架构 面试 程序人生 编程语言

在GitHub热屠榜的Spring Cloud Alibaba源码笔记,竟然出自此人之手!

Java 架构 面试 程序人生 编程语言

微信频繁读取 iOS15 用户的相册?

池建强

微信 隐私

一文看懂微服务背后的技术演进与应用实践

阿里巴巴中间件

阿里云 微服务 云原生 中间件

011云原生之事件驱动架构模式

穿过生命散发芬芳

云原生 10月月更

Flutter 无埋点SDK实现

GrowingIO技术专栏

flutter 大前端 sdk SDK测试

厂长来了 | 从个人英雄到软件工程,我们经历了什么

万事ONES

项目管理 研发管理 SaaS

OpenCV学习(一):简介

轻口味

android OpenCV 音视频 10月月更

疫情反复,声网如何助力青岛教育局保障线上教学体验?

声网

人工智能 网络

空降Github榜单,火爆全网的Spring Security手册及源码笔记,竟然标星103K

Java 架构 面试 程序人生 编程语言

SpringBoot 实战:优雅的使用枚举参数

看山

Java Sprint Boot Effective Spring 10月月更

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