OSSデータベース取り取り時報

第109回連載10年目突入⁠MySQLのJavaScriptでのストアド⁠プログラム⁠PostgreSQL 17ベータ3と既存バージョンのアップデート⁠“Tsurugi”遂に正式リリース

この連載はOSSコンソーシアム データベース部会のメンバーがオープンソースデータベースの毎月の出来事をお伝えしています。今回から連載開始後10年目に入りました。引き続きご愛読をよろしくお願いいたします。

[MySQL]2024年8月の主な出来事

8月はMySQLのバージョンアップはありませんでした。8月7日よりMySQLのクラウドサービスであるHeatWave MySQLが、期間の制限なく無料で利用できるOCIのAlways Freeクラウド・サービスの一部となりました。Always Freeの対象となるのは以下の仕様となります。

  • MySQLのイノベーション・リリースのみ利用可能
  • ストレージサイズは50GB固定
  • HeatWave AutoMLおよびHeatWave Lakehouseは利用可能、HeatWave GenAIは未サポート
  • インバウンドおよびアウトバウンド・レプリケーションは利用可能
  • 高可用性構成およびリード・レプリカは利用不可

MySQLのJavaScriptでのストアド⁠プログラム

MySQLでは、MySQL 5.0からストアド・プロシージャとストアド・ファンクション(まとめてストアド・プログラム呼ぶ)をサポートしています。これらのプログラムは、従来はSQL文で開発を行っていました。Oracle DatabaseでもJavaや21cからJava Scriptによるストアド・プロシージャの開発が可能でしたが、多くのRDBMSではSQLをベースとした言語での開発が基本でした。

MySQL 9.0からは多言語対応のためのMLE(Multilingual Engine)コンポーネントが追加され、JavaScriptでストアド・プログラムを開発できるようになりました。言語仕様はECMAScript 2023 Specificationに準拠し、Object, Function, Math, Date, Stringといった標準のライブラリ・オブジェクトをサポートしています。ストアド・プログラムの引数や戻り値としては、MySQLのデータ型をサポートしています。

ストアド・プログラムはSQL文での開発と同様に作成可能です。

ストアド・ファンクションの作成例
mysql> 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$ 
    -> ;
Query OK, 0 rows affected (0.01 sec)

上図の2行目にLANGUAGE JAVASCRIPTと書かれているとおり、このストアド・ファンクションはJavaScriptで記述されています。$mle$以降がJavaScriptとなっています。

作成したストアド・ファンクションを利用する方法も、通常の関数呼び出しと同様です。

JavaScriptで記述したストアド・ファンクションの利用例
mysql> SELECT gcd(75, 220), gcd(75, 225);
+--------------+--------------+ 
| gcd(75, 220) | gcd(75, 225) | 
+--------------+--------------+ 
|            5 |           75 | 
+--------------+--------------+ 
1 row in set (0.00 sec)

リファレンスマニュアルには他のサンプルも掲載されています。

さらにJavaScript SQL APIが用意されているため、ストアド・プログラムの引数としてSELECT文を記述し、その結果をストアド・プログラム内でJavaScriptで操作することも可能になっています。利用例はリファレンスマニュアルのJavaScript SQL APIの項目をご確認ください。

主な制限事項は下記の通りです。

  • Globalオブジェクトはサポートされているが、スコープは各ストアド・プログラム内に限定される
  • ファイルやネットワークへのアクセスは不可
  • サードパーティのライブラリのインポートは不可
  • シングルスレッドでの処理
  • 関数の再帰呼び出しは1,000回まで

JavaScriptを用いたストアド・プログラムの開発は、原稿執筆時点ではMySQLサーバーの商用版バイナリの利用が必要です。開発や学習のためには開発者用ライセンス版Developers Licenseが提供されていますので、そちらをご利用ください。またMLEコンポーネントはデフォルトではロードされていないため、INSTALL COMPONENT "file://component_mle";コマンドでのインストールが必要です。

[PostgreSQL]2024年8月の主な出来事

今回はリリースのお知らせが中心です。前回に続いて次期メジャーバージョン17の新しいベータ版がリリースされ、既存のサポート中バージョンの更新版もリリースされました。また、私たちの注目株「劔⁠Tsurugi⁠⁠」のお知らせもあります。

PostgreSQL 17ベータ3

6月末のベータ2に続き、8月8日にはベータ3がリリースされました。今回のベータ3リリースにより、第3四半期末に予定されている正式リリース(9月中でしょうか)にかなり近づいたと思われます。

前回のベータ2からの修正項目は次のとおりです。

  • standby_slot_namesパラメータの名前をsynchronized_standby_slotsに変更
  • いくつかのSQL/JSONの修正
  • pg_combinebackup --cloneの修正
  • pg_createsubscriberの複数の修正
  • pg_upgrade中にサブスクリプション情報を取得する際の効率を向上
  • 起動プロセス中にサーバーがエラーを送信した場合にsslmode=preferのTLSフォールバック動作がエラーになる問題を修正
  • pg_basebackup増分バックアップを前回のバックアップの直後にスタンバイサーバ上で実行した場合のエラーケースを文書化
  • pg_upgrade --transaction-sizeでのバックエンドでのRAM使用量が1桁多い可能性がある問題を修正

既存PostgreSQLのアップデート

前述のベータ3と同じタイミングで、サポート中の全メジャーバージョンを対象にしたマイナーバージョンもリリースされました。

今回のリリースには1件のセキュリティ脆弱性の修正が入っています。

CVE-2024-7348: pg_dump中のPostgreSQLリレーション置換で任意のSQLが実行される
pg_dumpのTime-of-check Time-of-use(TOCTOU)競合状態により、オブジェクト作成者は pg_dumpを実行しているユーザとして任意のSQL関数を実行できます。このユーザは多くの場合スーパーユーザです。この攻撃には、別のリレーションタイプをビューまたは外部テーブルに置き換えることが含まれます。この脆弱性は、バージョン12から16の既存リリースに存在します。

その他のリリースのお知らせに記された修正項目のいくつかをピックアップします。ここに挙げたもの以外にも50以上の修正項目があります。なお、リリースされたバージョン12~16により修正対象かどうかが異なりますので、詳細はリリースノートなどを参照してください。

  • Merge Right Anti Joinプランからの誤った結果を回避
  • VACUUMの無限ループを防止
  • ALTER TABLE DETACH ... PARTITION CONCURRENTLY中のパーティションプルーニング設定を修正
  • CALLステートメントの引数として使用される安定した関数の動作を修正

PostgreSQLバージョン12のEOL予告

新たなメジャーバージョンが登場するということは、過去のバージョンが姿を消していくことでもあります。現在サポート対象になっている中で最も古いバージョン12が、2024年11月の更新を最後にしてEOL(End of Life:サポート終了)になります。このバージョン12を本番で利用されている場合には、対応の検討をおすすめします。

劔“Tsurugi”の最新情報

この連載で経過をお伝えしている劔⁠⁠Tsurugi⁠の最新情報です。4月のベータ4のリリースまでお知らせしていましたが、その後、7月にベータ5、そして8月16日にベータ6がリリースされました。変更点のリストを見ると、発見した問題点の修正が佳境に入っている様子が感じられます。プロジェクトの主要メンバの話などから、正式リリースが近づいているものと推察されます。

〔追記〕

8月30日に初の正式バージョンであるTsurugi 1.0.0がリリースされました。ひとつ前のベータ6と同様に、多くのSQL機能を追加および修正しています。また、起動中のトランザクションログ圧縮機能が追加されましたが、これはまだ試験的サポートのようです。他にもトランザクションログに関する重要な不具合解消などもされています。正式バージョンがリリースされましたが、マイナーバージョンでの機能追加や修正が出てくるのだろうと推測します。

また、開発チームは劔⁠Tsurugi⁠本体の完成度を上げることに加えて、さまざまな領域にこの新エンジンを適用することで、これまではできなかったことの実現に向け、各方面との積極的な連携を探っていると聞きます。今後は劔⁠Tsurugi⁠そのものの状況の他に、この新データベースエンジンが何を可能にしてくれるのかにも注目してお知らせしていきたいと考えています。

2024年8月以降開催予定のセミナーやイベント⁠ユーザ会の活動

イベントごとに利便性のあるオンライン開催や、従来通りのオンサイト(会場)開催、またはハイブリットが混在するようになっています。興味を持たれて参加したいイベントの開催形態にご注意ください。

Open Developers Conference 2024

日程 2024年9月7日(土⁠⁠ 10:00~18:00
場所 docomo R&D OPEN LAB ODAIBA(台場フロンティアビル 12F)
内容 開発者とインフラエンジニアの交流の場として、⁠DevOps」⁠開発」⁠開発者」をキーワードに、様々な最新情報を提供いたします。今回お知らせするODCはいずれも展示とセミナーの両方を会場にて開催します。セミナーのオンライン配信は予定されていません。ただし、出展者が独自に配信を行うセミナー枠はあるかもしれません。オラクルのMySQL Community Teamとしての講演とブース展示が予定されています。
主催 オープンソースカンファレンス実行委員会

EDB Postgres AI ワークショップ 〜EDB Postgres AIを使ったRAGの世界を体験!

日程 2024年9月19日(木)14:00~17:00(受付:13:30)
場所 赤坂インターシティコンファレンス
内容 最近になり生成AIと共にRAG(Retrieval-Augmented Generation検索拡張生成)という言葉を多く目にするようになってきました。RAGという言葉が出る前に、PostgreSQLの世界でpgvectorというExtensionがリリースされました。pgvector自体はベクトル化データを従来のRDBであるPostgreSQLで扱えるようになっただけですが、これを活用したPostgreSQLで実現するRAGが昨今注目されています。従来のSQLのまま、Pythonプログラムの記載を最小限にした生成AIアプリケーションが可能になるので、作業負担の軽減やPython周りも管理しやすくなります。このセミナーでは、EnterpriseDBが開発したPostgres AIで何が出来るのか、また従来の実現方法と比較して生産性はいかに向上するのか、など実際に本ワークショップを通して体験できます。
主催 エンタープライズDB株式会社

データベースセキュリティの基本

日程 2024年9月19日(木)16:00~17:00(15:45接続開始)
場所 オンラインセミナー(Zoom)
内容 サイバー攻撃や内部不正が増加する中、データベースのセキュリティがますます重要になっています。本Webinarでは、SQLインジェクションやバッファ・オーバーフロー、インサイダー情報悪用などの主要な脅威について解説し、MySQLが提供する認証、暗号化、監査などの基本的な防御機能を紹介します。データベースの専門知識がない方でも理解しやすい内容で、組織全体でのセキュリティ強化を支援します。
主催 日本オラクル株式会社 MySQL Global Business Unit

MySQL運用⁠監視の新時代へ⁠ 最新ツールとOpen Telemetry対応で実現する最適化手法の基本

日程 2024年9月26日(木)16:00~17:00(15:45接続開始)
場所 オンラインセミナー(Zoom)
内容 MySQL Enterprise MonitorのEOLの後の対応方法と最新の運用・監視手法がわかります!2025年1月にMySQL Enterprise MonitorがEnd of lifeを迎えるにあたり、運用・監視の新しいアプローチを検討する必要があります。このWebinarでは、MySQL Enterprise Monitorに替わるOracle Enterprise Manager for MySQLとOCI Database Managementの機能とユースケースを紹介します。さらに、MySQL 8.4 LTSにてサポートされているOpen Telemetryを活用し、外部ツールとの連携による最新の監視手法についても解説します。
主催 日本オラクル株式会社 MySQL Global Business Unit

MySQLによるデータを守るセキュリティ機能と構築のポイント

日程 2024年10月8日(火)16:00〜17:00(15:45接続開始)
場所 オンラインセミナー(Zoom)
内容 データベースセキュリティを強化するための具体的な手法とMySQLの強力なセキュリティ機能の活用方法を詳しく解説します。本Webinarでは、SQLインジェクション対策、暗号化設定、ファイアウォールの設定、監査機能の有効化、マスキングの実装など、MySQLのセキュリティ設定を一から学び、ベストプラクティスを習得し、現場で即活用できる具体的なノウハウを提供いたします。
主催 日本オラクル株式会社 MySQL Global Business Unit

PostgreSQL Conference Japan 2024

日程 2024年12月6日(金)10:00~18:10
(9月11日まで講演発表の募集中)
場所 AP日本橋(東京都)6F(東京駅より徒歩5分)
内容 毎年秋に開催されている日本PostgreSQLユーザ会(JPUG)主催のPostgreSQL Conference Japan 2024が案内されました。今年は12月6日の開催です。午前に2講演、午後は4トラックで16講演とクロージングセッションが予定されています。イベント協賛、講演、実行委員・スタッフの募集をしております。講演募集の締め切りは2024年9月11日です。参加にはチケットの購入が必要です。一般参加チケットは10月6 日から発売予定です。
主催 日本PostgreSQLユーザ会

おすすめ記事

記事・ニュース一覧