2024年SQLite 3.45+対応。JSONB Binary Encoding+JSON Performance 3x+jsonb()/json_extract()新関数+CrSQLite/Turso/Litestream互換+Storage効率化搭載。
SQLite JSONB Binary Formatは2024年1月にSQLite 3.45.0+で正式対応となったJSONB(JSON Binary Format)機能で、従来JSON文字列ベースの処理を、PostgreSQL JSONB類似のBinary Encodedフォーマットに置き換える革新的アップデート。JSON処理速度3倍向上+Storage効率化(平均20-40%サイズ削減)+JSONインデックス可能化が主なメリット。SQLiteは元来軽量+ローカル組み込みDB として モバイルアプリ・ブラウザ(Chrome/Firefox/Safari Indexed DB Backend)・Edge Computing(Cloudflare D1)等の幅広い用途で採用されているが、JSON処理性能の弱さが課題だった。JSONB対応により、PostgreSQL JSONB に匹敵するJSONクエリ性能が SQLite で実現可能となり、Local-First Application + Edge Database の選択肢として一段階レベルアップ。CrSQLite(Conflict-free Replicated SQLite)・Turso(libSQL)・Litestream(SQLite to S3 Replication)等の SQLite Ecosystem も JSONB 対応進行中で、Modern Web Application の Database Tier 選択肢として再評価される動向。
SELECT jsonb('{"key":"value"}')| 項目 | SQLite JSONB(3.45+) | SQLite JSON(3.45以前) | PostgreSQL JSONB | MySQL 9 JSON |
|---|
| Format | Binary Encoded | Text(JSON文字列) | Binary Encoded | Text(JSON文字列) |
| Storage効率 | 20-40%削減 | 標準 | 30-50%削減 | 標準 |
| Read性能 | 3x高速 | (基準) | 5-10x高速 | (基準) |
| Index対応 | ○ Path Index | × | ○ GIN Index | ○ Multi-Valued Index |
| ファイルサイズ | 小(JSONBで縮小) | 中 | 中-大 | 中-大 |
| 採用Use Case | Local-First / Edge | レガシーSQLite | Web Backend | Enterprise Web |
| Browser Native | △ IndexedDB Backend | △ | × | × |
| 学習曲線 | 低(SQLite知識+α) | 低 | 中 | 中 |
-- JSONB列定義
CREATE TABLE users (
id INTEGER PRIMARY KEY,
data BLOB CHECK (json_valid(data) AND json_type(data) = 'object')
);
-- JSONB挿入
INSERT INTO users (data) VALUES (
jsonb('{"name": "Alice", "age": 30, "tags": ["admin", "active"]}')
);
-- JSONB Path抽出
SELECT
data ->> 'name' AS name,
data -> 'tags' AS tags,
json_extract(data, '$.age') AS age
FROM users;
-- JSON Path Index
CREATE INDEX idx_user_age ON users (json_extract(data, '$.age'));
-- JSONB CHECK Constraint
CREATE TABLE products (
id INTEGER PRIMARY KEY,
metadata BLOB CHECK (
jsonb(metadata) IS NOT NULL AND
json_extract(metadata, '$.price') > 0
)
);
SQLite JSONB Binary Formatは Web開発者+モバイルアプリ開発者向けの重要技術更新で、Local-First Application(オフライン対応・モバイル+デスクトップ)+ Edge Database 設計で価値発揮。jisaku.com の VPS API(PostgreSQL 採用)では直接関係しないが、Edge Migration や Local-First化検討時に重要な選択肢。SQLite + JSONB は、PostgreSQL JSONB の本格運用が過剰なシナリオ(中小規模Webアプリ・モバイルアプリ・SaaS Edge Cache)で最適解となる。Cloudflare D1 採用プロジェクトでは SQLite 3.45+ Backend で JSONB 利用可能、Turso libSQL の Edge Database でも対応進行中。Migration 戦略として、既存SQLite Tableの JSON 列を UPDATE table SET col = jsonb(col) で一括 JSONB変換、PRAGMA integrity_check で検証後 Production適用。Storage効率20-40%削減の効果は、JSON多用するアプリ(Configuration Storage・Event Logs・User Preferences・Metadata)で特に大きい。一方、Read-heavy Workloadではない場合(Write頻度高い+JSON書き換え多い)、JSONB の Binary Encoding/Decoding オーバーヘッドが逆効果となる可能性、Profiling 推奨。日本国内の Modern Web開発(Cloudflare Workers + D1 + Hono)で SQLite JSONB は2024-2026年に標準化が進む見込み。
SQLite JSON(3.45以前)との違い: JSON は文字列ベース格納、JSONB は Binary Encoded格納。JSONB は Read 3x高速+Storage 20-40%削減、Write でやや遅い(Encoding コスト)。Read重視ならJSONB、Write重視+小規模ならJSON継続もOK。 PostgreSQL JSONBとの違い: PostgreSQL JSONB(2014年〜)は本格的なRDBMS Backend で大規模対応、SQLite JSONB(2024年〜)は組み込みDB+軽量設計。Web Backend+大量データならPostgreSQL、モバイル+Edge+Local-FirstならSQLite。
Q1: 既存 SQLite Database を JSONB 化するメリットは? A: JSON 多用するスキーマ(Settings・Metadata・Event Logs等)で Storage 20-40%削減+Read性能 3倍向上。Database File Size 縮小はモバイルアプリ Storage制約・Cloudflare D1 サイズ制限(10GB/DB)対策に有効。Migration コスト低い、推奨。
Q2: JSONB と Native Column どちらを選ぶ? A: 構造固定+Index必須+Type厳密 → Native Column(VARCHAR/INT/BOOL等)。動的Schema+JSON多用+柔軟性重視 → JSONB。多くの場合は Hybrid 戦略(主要列はNative+Metadata等はJSONB)が最適、Schema Evolution の柔軟性確保。
Q3: Cloudflare D1 で JSONB は使える?
A: 使える。Cloudflare D1は SQLite 3.45+ Backend で JSONB Native対応、Workers から prepared statement で jsonb() 関数経由で利用可能。Edge Locationでの低レイテンシJSON処理が現実的に。