MySQL 9.0登場。 JavaScriptストアドプログラムが利用可能に、ベクトル型もサポート
オラクルはリレーショナルデータベース「MySQL」の新バージョンとなる「MySQL 9.0」をリリースしました。
MySQLは現在、数カ月ごとにリリースされ積極的に新機能が追加されるイノベーションリリース(Innovation Release)と、長期で安定して利用されることを想定して2年ごとにリリースされる長期サポート(LTS:Long Term Support)版の2つに分かれてリリースされています。
現在のLTS版は今年(2024年)4月に登場したMySQL 8.4です。
そして今回リリースされたMySQL 9.0はイノベーションリリースに該当します。最新機能をいちはやく試したい開発者やユーザーのためのリリースです。
MySQL 9.0の主な新機能
MySQL 9.0のドキュメント「What Is New in MySQL 9.0」から、新機能「JavaScriptストアドプログラム」「ベクトル型のサポート」「EXPLAIN ANALYZEの結果をJSON形式で出力」の3つを紹介します。
JavaScriptストアドプログラム
MySQL 9.0 Enterprise Editionでは、ストアドプログラムをJavaScriptで記述できるようになりました。対応する仕様は「ECMAScript 2023」です。
ストアドプログラムとは、データベースエンジン側にあらかじめまとまったクエリ処理などを登録しておき、必要に応じて呼び出すことでその処理を実行できる機能です。
アプリケーション側から処理を切り離しつつ、アプリケーションから呼び出してデータベースエンジン内で処理を実行できるため、複雑な処理をアプリケーションから隠蔽しつつ、アプリケーションとデータベースサーバ間でのデータ転送が最小限となるためネットワークの負荷が軽く、セキュアに処理できる、などのメリットがあります。
下記はそのサンプルコードです。
CREATE FUNCTION gcd(a INT, b INT)
RETURNS INT
NO SQL
LANGUAGE JAVASCRIPT AS
$mle$
let x = Math.abs(a)
let y = Math.abs(b)
while(y) {
var t = y
y = x % y
x = t
}
return x
$mle$
;
ストアドプログラムをJavaScriptで記述できるようになることで、より多くの開発者がMySQLの機能を活用できるようになることが期待されます。
オラクルは今年(2024年)1月に、ストアドプログラムでJavaScript対応を行ったMySQL Enterprise Editionプレビュー版として公開しています。
そのときの説明では、オラクルが開発している多言語対応の仮想マシンであるGraalVM Enterprise Editionを用いていると説明されていました。この機能がMySQL 9.0で正式に採用されたものとみられます。
参考:オラクル、MySQLのデータベースエンジンでJavaScriptをサポート、ストアドプロシージャなどJavaScriptで記述可能に。プレビュー版をリリース
ベクトル(Vector)型をサポート
テーブル内にベクトル型の列を持てるようになりました。ベクトルは4バイトの浮動小数点のリストとして構成され、バイナリ文字列もしくはフォーマット化された文字列のリストとして表現されます。
下記はベクトル型の列を持つテーブルを作成したところです。
mysql> CREATE TABLE v1 (c1 VECTOR(5000));
Query OK, 0 rows affected (0.03 sec)
Explain Analyzeの結果をJSON形式で出力可能に
クエリをどのように実行するかを示す実行計画を出力する「Explain Analyze」の結果をJSON形式で出力可能になりました。
EXPLAIN ANALYZE FORMAT=JSON INTO @variable select_stmt
あわせて読みたい
IT系上場企業の平均年収を業種別にみてみた 2024年版[前編] ~ ネットベンチャー、ゲーム、メディア系
≪前の記事
生成AIに疑似コードで指示すると自然言語よりも効率的にプログラムが生成できるというアイデアから生まれた、生成AI用の疑似言語「SudoLang」