AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

评论

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

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day26

Java 程序员 后端

Java死锁的原因例子及解决方法,三年Java开发

Java 程序员 后端

Java实现经典算法,阿里java技术专家面试

Java 程序员 后端

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day16

Java 程序员 后端

Java架构师职位常见面试题,看完面试不再慌!

Java 程序员 后端

Java架构师面试之Netty面试专题及答案(共10题,含详细解答

Java 程序员 后端

【架构设计模块九】:设计电商秒杀系统

Ryoma

Java岗大厂面试百日冲刺【Day42】,java基础面试宝典

Java 程序员 后端

Java岗开发3年,公司临时抽查算法,离职后这几题我记一辈子

Java 程序员 后端

Java岗开发者福利!Github热度飙升的多线程学习手册,已获31k+star

Java 程序员 后端

033云原生之云服务测评指标体系

穿过生命散发芬芳

云原生 10月月更

Java市场饱和了吗?现在转行学习Java会不会太晚了?

Java 程序员 后端

架构实战营第1期-毕业设计项目

Anyou Liu

「架构实战营」

Java架构师面试问些什么?微服务之springcloud面试题(共22题

Java 程序员 后端

自由职业者靠什么赚钱?

石云升

职场经验 10月月更

java实现简单二叉树,深入分布式缓存从原理到实践技术分享

Java 程序员 后端

java并发之Condition图解与原理剖析,推荐

Java 程序员 后端

Java日常开发的21个坑,你踩过几个?,java基础程序代码编写

Java 程序员 后端

Java注解,java架构师课程哪家好

Java 程序员 后端

架构实战营毕业总结

VE

架构实战课

Java常量池理解与总结,java线程池回收原理

Java 程序员 后端

Java异常架构与异常关键字,海康威视java开发面经

Java 程序员 后端

文本行随机打乱工具

入门小站

工具

Java是未来的第一编程语言吗?,3分钟告诉你为什么要用Java开发高频交易系统

Java 程序员 后端

Java注解-一文就懂,java程序设计与实践教程王薇

Java 程序员 后端

Java开发必备 Git 分支开发:规范指南及完全学会Git的24堂课笔记

Java 程序员 后端

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day14

Java 程序员 后端

linux去掉空行的几种方法

入门小站

Linux

Java并发之Condition详解,springframework教程

Java 程序员 后端

Java并发关键字-final,java实战视频

Java 程序员 后端

Java开发工作4年还是只会“增删改查”,java技术栈太广

Java 程序员 后端

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