「SQLite 3.45.0」公開、JSON関数がバイナリ形式のJSONBに対応「JSONを多用する処理なら3倍のパフォーマンス向上が見込める」

SQLiteの最新版「SQLite Release 3.45.0」が公開された。SQLiteは、小型、高速、自己完結型、高信頼、フル機能をうたうSQLデータベースエンジンを実装したC言語ライブラリ。

» 2024年01月18日 08時00分 公開
[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 SQLite開発チームは2024年1月15日(米国時間)、SQLiteの最新版「SQLite Release 3.45.0」を公開した。SQLiteは、小型、高速、自己完結型、高信頼、フル機能をうたうSQLデータベースエンジンを実装したC言語ライブラリ。

SQLite 3.45.0の主な機能強化点

「SQLITE_RESULT_SUBTYPE」プロパティの追加

 アプリケーション定義のSQL関数用に「SQLITE_RESULT_SUBTYPE」プロパティが追加された。「sqlite3_result_subtype()」を呼び出す全てのアプリケーション定義のSQL関数は、この新しいプロパティで登録する必要がある。

 サブタイプを使用する全てのアプリケーションでは、コンパイル時オプションとして「DSQLITE_STRICT_SUBTYPE=1」の使用が推奨されている。

JSON SQL関数の強化

 全てのJSON関数が、「JSONB」という新しい内部パースツリー形式を使用するように書き換えられた。この新しいパースツリー形式はシリアライズ可能であるため、データベースに格納できる。その目的は、JSON値が使用されるたびに不要な再パースが行われるのを避けることにある。

 書き換え後も、JSON関数の全てのレガシー機能は維持されている。一方、書き換えにより、JSONテキストを入力として受け付けるJSON関数は全て、同じパラメーターでJSONBバイナリコンテンツも受け入れるようになった。テキストデータを受け取るのか、バイナリデータを受け取るのかを関数に指示する必要はなく、関数は自らそれを判断する。

 JSONを出力するJSON関数には2つのバージョンがあり、従来バージョン(json_関数)はこれまでと同じように動作する。だが、新しいバージョン(jsonb_関数)は、テキストJSONではなく、バイナリのJSONBを生成する。

 SQLite開発者のリチャード・ヒップ氏は「アプリケーションに変更を加えなければ、おそらくわずかに(1%)高速化されるものの、全てがこれまで通りに動作すると考えられる。だが、テキストJSONの代わりにJSONBを保存するようにアプリケーションを変更すれば、少なくともJSONを多用する処理では、3倍のパフォーマンス向上が見られる可能性がある。また、JSONBはほとんどの場合、テキストJSONよりもわずかに小さいため、JSONを大量に使用する場合は、データベースサイズも多少小さくなる可能性がある」と述べている。

「SQLITE_DIRECT_OVERFLOW_READ」最適化が既定で有効に

 コンパイル時に「-DSQLITE_DIRECT_OVERFLOW_READ=0」を用いて無効にできる。

クエリプランナーの改良

 ANALYZEが低品質と認識したインデックスをより適切に無視するようになった。

 その他、以下の改善、強化が行われている。

  • Windows CLIでのUTF-8コンテンツの表示を改善
  • 「.dump」スクリプトの再生を自動的に検出し、「.dbconfig defensive off」や「.dbconfig dqs_dll on」などの適切な設定調整が行われるようになった
  • FTS5仮想テーブルへのFTS5 tokendataオプションの追加

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。