Oracleは、データベース内で実行されるGraalVMベースのストアドプロシージャのサポートを追加した。この機能は、APEXフレームワークにフォーカスした多言語エンジン(MLE)を通してJavaScript機能をサポートする。
この動きにより、GraalVMでできる範囲が拡大する。GraalVMは、アプリケーションをネイティブ実行可能ファイルとしてコンパイルするJava仮想マシンとして開始した。その後、RubyやCOBOLなどの追加言語をサポートするようになった。開発環境で実行してネイティブアプリケーションを生成したり、バックエンドシステムでアプリケーションを実行したりする、GraalVMの一般的な使用例とは異なり、この使用法はデータベース21c内で直接動作するため、コードはデータが格納されている場所と同じ場所で動作する。その結果、外部でデータをシリアル化して分析する必要がなく、クエリの一部としてデータを分析するための実行が高速化される。
GraalVMのディベロッパーアドボケートであるAlina Yurenko氏は、データの側で直接コードを実行することの利点を要約している。
これにより、ネットワークを介した不要なデータ転送が排除され、データ集約型の操作のパフォーマンスが大幅に向上します。特にテラバイト以上のデータに適用される場合にはそうです。
次に、たとえば、データベース内にビジネスルールを保存して実行することで、すべてのアプリケーションとデータにアクセスするユーザがルールに従うことが保証されます。そのため、セキュリティとコンプライアンスの要件の実装が大幅にシンプルになりますす。
最後に、一般的に使用される機能を中央に保存し、通常のSQLステートメントの上に単純なユーザ定義関数として実行できるため、それぞれのアプリケーションでコードを複製する必要がありません。これは、ロジックが複雑であったり、頻繁に変更される傾向がある場合に特に実用的です。
GraalVMは以前のOracleデータベースの古いJavaScript実装に置き換わるものである。以前のものは、Nashornによって提供されたものであり、Java11で非推奨となっている。OracleDBの製品管理であるKuassi Mensah氏は、Java開発者向けの21c JDBCコネクタの新機能に関して、さらに考察している。これには、(データベース外のアプリケーションでの)ネイティブGraalVMコンパイルの事前構成、リアクティブプログラミングモデル、パフォーマンスを向上させるための仮想スレッドのサポートなどの機能が含まれる。より詳細な説明は、Mensahのテクノロジーガイド「Java開発者向けのOracle Database 21cの内容」に記載されている。
この文脈において、GraalVMによって使用される多言語エンジンは、以前のPL/SQL実装と比較して、より多くの開発者がストアドプロシージャを作成する機会を提供することになる。Lambda School、Code Academyなどの組織がJavaScriptを共通言語として教える場合、PL/SQLははるかにまれなスキルセットになった。JavaScriptはRedMonkのトップ20言語ランキングで1位にランクされており、PL/SQLはランク外である。同様の状況は、最も愛され/恐れられ/望まれている技術に関するStackOverflowの2020年の調査にも見られ、JavaScriptは上位にランクされ、PL/SQLはランク外となっている。