個人開発のDBに Turso が便利そう
最近、個人開発で使えるデータベースとして、Turso がかなり便利そうだったので、調査内容をまとめてみました。
Turso は、libSQL を基盤としたマネージド型の分散 SQLite データベースサービスです。
libSQL は、エッジ環境で動作する分散データベースで、Turso ではそれをクラウドネイティブに運用できます。
無料プランでも最大 100 個のデータベース を作成でき、有料プランではなんと 無制限 にデータベースを建てられます。(月間アクティブ数は上限 + 従量課金あり)
| プラン | 料金/月(Yearly) | Databases | 月間アクティブDB | 総ストレージ | 読み込み行数/月 | 書き込み行数/月 | 同期量/月 | 復元期間 |
|---|---|---|---|---|---|---|---|---|
| Free | $0 | 100 | 100 | 5GB | 5億 | 1,000万 | 3GB | 1日 |
| Developer | $4.99 | 無制限 | 500 + $0.20/DB | 9GB + $0.75/GB | 25億 + $1/億 | 2,500万 + $1/100万 | 10GB + $0.35/GB | 10日 |
| Scaler | $24.92 | 無制限 | 2,500 + $0.05/DB | 24GB + $0.50/GB | 1000億 + $0.80/億 | 1億 + $0.80/100万 | 24GB + $0.25/GB | 30日 |
| Pro | $416.58 | 無制限 | 10,000 + $0.025/DB | 50GB + $0.45/GB | 2,500億 + $0.75/億 | 2億5,000万 + $0.75/100万 | 100GB + $0.15/GB | 90日 |
(2025年10月時点。最新情報は公式サイト参照)
libSQL は、SQLite をフォークしてリモートアクセスやクラウド連携に対応させたオープンソースのデータベースです。
Turso の開発元が OSS として公開・開発しています。
SQLite の特徴を引き継いでおり、ファイルベースで軽量・自己完結型。そのため使い方によっては「ユーザーごとに独立した DB を建てる」といった使い方も可能です。
- サーバーレス
専用のサーバープロセスを必要とせず、アプリから直接ファイルを扱う構造。
→ データは 1 つの
.sqlite/.dbファイルに保存。 - 軽量 & 高速
数 MB のライブラリで動作し、スマホ・IoT・ブラウザなど組み込み用途に最適。
- 自己完結型
外部依存がほとんどなく、インストール・設定が最小限。
- SQL 準拠
標準的な SQL が利用可能(ただし一部の高度機能は非対応)。
- 幅広い利用範囲
- スマホアプリ(iOS/Android で標準採用)
- ブラウザ(Firefox, Chrome の内部データ保存)
メリット: セットアップが簡単・小規模システムに最適・クロスプラットフォーム
デメリット: 高並列アクセスには不向き(MySQL / PostgreSQL の方が適している)
libSQL は SQLite をベースにしていますが、クラウド時代に合わせて以下のような拡張がされています。
- リモート接続対応
HTTP / WebSocket 経由でリモート DB にアクセス可能。
→
@libsql/clientなどのライブラリで、Postgres のようにネットワーク越しに利用できる。 - レプリケーション
「埋め込みレプリカ (Embedded Replica)」機能で、アプリ内にローカル SQLite を持ちつつクラウドと同期。
→ 読み込みはローカルで超高速、書き込みはリモートに反映。
- クラウドネイティブ設計
Turso と組み合わせることで、世界中に分散配置された SQLite を扱える。
Cloudflare Workers などのエッジ環境と特に相性が良い。
- 拡張性
オフライン書き込みや差分同期など、今後の機能拡張も進行中。
また、現在は Rust による再実装 も進められており、今後さらに進化していく可能性があります。
👉 We will rewrite SQLite (Turso Blog)
データは S3 上に保存され、S3 同等の 99.999999999%(イレブンナイン) の耐久性を誇ります。
リモート DB へのコミット反映はプランによって異なり、最大で 10〜100ms 程度の遅延が発生します。
- 書き込みは直列化され、後続トランザクションは待機。
- 読み込みはスナップショット分離を採用し、トランザクション開始時点の一貫したデータを参照可能。
- 分離レベルは SERIALIZABLE 相当 ですが、PostgreSQL と異なり write skew が発生する場合があります。
課金・クォータは以下の指標でカウントされます。
- 行読み込み数(スキャン数)
- 行書き込み数
- ストレージ使用量
特に行読み込み数はフルスキャンが走ると大きく増えるため、インデックス設計とクエリチューニング が重要になります。
Turso では ベクトル検索 にも対応しています。
- ベクトルを
FLOAT32やBLOB型のカラムに保存 - 類似度関数
vector_distance_cosを利用可能 - ベクトルインデックス
libsql_vector_idx(column)で高速検索 -
vector_top_k(index_name, q_vector, k)で上位K件を取得
ローカル SQLite とクラウド DB を同期できる機能です。
読み込みはローカルDBで高速に行い、書き込み時にクラウドへ自動同期されます。
ただし、これはファイルシステムを持つ環境(VMやVPSなど)向けで、サーバーレス環境では利用できません。
既存 DB からコピーして新しい DB を作成できます。
本番データを壊さずに検証・開発が可能で、Pull Request ごとに独立した DB を作る こともできます。
指定した時刻に DB を復元できる機能。
無料プランでは直近 24 時間、有料プランでは最大 90 日前まで対応しています。
以前はコールドスタートがありましたが、現在は 無料プランでもゼロ。
この点は他の無料 DB サービスよりも大きな魅力です。
無料枠が大きく、個人開発では良い選択肢になりそうです。
PostgreSQL ベースのデータベースサービスだと無料プランで大抵コールドスタートがあったりしますが、無料からコールドスタートが無いのも嬉しい点です。
また、同じ SQLite ベースの Cloudflare D1 は トランザクションに制限がありますが、Turso はサポートされています。
同時書き込みには弱いので、並列書き込みが多いアプリケーションでは厳しいですが、読み込み中心のアプリケーションならば、良い選択肢になりそうでした。
実際に使ってみて、メリット・デメリットがよりわかってきたらまた記事にしようと思います。

コメントを送る
コメントはブログオーナーのみ閲覧できます