QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

评论

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

为联邦学习互信提供“技术解”,星云Clustar荣获FTL-IJCAI 21 最佳应用论文奖

星云Clustar

联邦学习 论文 IJCAI 纵向联邦学习 联邦学习互信

Linux内核内存管理:地址转换和MMU

Linux服务器开发

操作系统 内存管理 Linux内核 内核开发 地址转换

neo4j 安装与基本操控

escray

学习 neo4j 8月日更

LeetCode刷题14-简单-最长公共前缀

ベ布小禅

8月日更

springboot整合activiti自带在线流程编辑器,整个程序源码,请假审批

金陵老街

大前端 工作流 ERP Activiti spring-boot 2.5.4

快手基于 Flink 构建实时数仓场景化实践

Apache Flink

flink 解决方案 实时数仓架构 快手

PyFlink 开发环境利器:Zeppelin Notebook

Apache Flink

Zeppelin notebook pyflink 开发环境利器

阿里大牛肝出的443页TCP/IP协议趣谈笔记,竟然在GitHub标星27k+

Java 编程 架构 面试 架构师

网络攻防学习笔记 Day116

穿过生命散发芬芳

网络安全 8月日更

filecoin挖矿教程?filecoin挖矿收益如何?

区块链 分布式存储 IPFS filecoin挖矿 filecoin收益

Filecoin价格今日行情:filecoin价格还能怎么走?

区块链 分布式存储 IPFS filecoin价格 filecoin行情

如何认知新技术?区块链技术和应用

百度开发者中心

区块链 最佳实践 方法论

安卓工控主板通信接口有哪些呢?

双赞工控

安卓主板 工控主板

新思科技软件组成分析解决方案获得Forrester Wave认可

InfoQ_434670063458

新斯科技 Forrester 软件组成分析

如何用3分钟搭建一个属于自己的网站?

百度开发者中心

最佳实践 开发者 方法论

开发者实践丨盲水印插件:用户端的实时视频溯源保护

声网

开发者实践 RTE大赛

SmartNews:基于 Flink 加速 Hive 日表生产的实践

Apache Flink

flink hive airflow

PyFlink 开发环境利器:Zeppelin Notebook

阿里云大数据AI技术

中国做ipfs公司排名?挖ipfs排名前三的公司是?ipfs矿机哪家最好?

中国做ipfs公司排名 ipfs矿机哪家最好 挖ipfs排名前三的公司是

为什么Kafka的数据不写了?

BUG侦探

DNS gopack Linux操作系统

久等了!【Innovation 2021】网易应用创新开发者大赛正式开赛!

网易云信

开源 架构 开发者 网易 语言 & 开发

【架构实战营】--第一次作业

Geek_d18264

架构实战营

如何短时间突击 Java 通过面试?

Java架构师迁哥

如何搭建SpringcloudAlibaba基础环境(一)

程序员半支烟

Java 微服务

服务全球用户,EMQ X Cloud 新增欧洲部署支持

EMQ映云科技

服务器 mqtt 部署与维护 Cloud emq

关于数据库应用的一些思考

石云升

数据库 8月日更

如何利用FL Studio编曲--入门级

懒得勤快

深入了解现代web浏览器(第一部分)

GKNick

谈谈Go的固定时长定时器和周期性时长定时器

Regan Yue

协程 Go 语言 8月日更

技术盘点:Unity SDK 开发中有哪些大坑?

环信

英特尔的碳中和版图

科技新消息

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