Site cover image
バックエンド寄りのWebエンジニアをやっています。学んだことを書いていきます。

個人開発の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月時点。最新情報は公式サイト参照)

👉 https://turso.tech/pricing


libSQL は、SQLite をフォークしてリモートアクセスやクラウド連携に対応させたオープンソースのデータベースです。

Turso の開発元が OSS として公開・開発しています。

SQLite の特徴を引き継いでおり、ファイルベースで軽量・自己完結型。そのため使い方によっては「ユーザーごとに独立した DB を建てる」といった使い方も可能です。


  1. サーバーレス

    専用のサーバープロセスを必要とせず、アプリから直接ファイルを扱う構造。

    → データは 1 つの .sqlite / .db ファイルに保存。

  2. 軽量 & 高速

    数 MB のライブラリで動作し、スマホ・IoT・ブラウザなど組み込み用途に最適。

  3. 自己完結型

    外部依存がほとんどなく、インストール・設定が最小限。

  4. SQL 準拠

    標準的な SQL が利用可能(ただし一部の高度機能は非対応)。

  5. 幅広い利用範囲
    • スマホアプリ(iOS/Android で標準採用)
    • ブラウザ(Firefox, Chrome の内部データ保存)

メリット: セットアップが簡単・小規模システムに最適・クロスプラットフォーム

デメリット: 高並列アクセスには不向き(MySQL / PostgreSQL の方が適している)


libSQL は SQLite をベースにしていますが、クラウド時代に合わせて以下のような拡張がされています。

  1. リモート接続対応

    HTTP / WebSocket 経由でリモート DB にアクセス可能。

    @libsql/client などのライブラリで、Postgres のようにネットワーク越しに利用できる。

  2. レプリケーション

    「埋め込みレプリカ (Embedded Replica)」機能で、アプリ内にローカル SQLite を持ちつつクラウドと同期。

    → 読み込みはローカルで超高速、書き込みはリモートに反映。

  3. クラウドネイティブ設計

    Turso と組み合わせることで、世界中に分散配置された SQLite を扱える。

    Cloudflare Workers などのエッジ環境と特に相性が良い。

  4. 拡張性

    オフライン書き込みや差分同期など、今後の機能拡張も進行中。

また、現在は Rust による再実装 も進められており、今後さらに進化していく可能性があります。

👉 We will rewrite SQLite (Turso Blog)


データは S3 上に保存され、S3 同等の 99.999999999%(イレブンナイン) の耐久性を誇ります。

リモート DB へのコミット反映はプランによって異なり、最大で 10〜100ms 程度の遅延が発生します。


  • 書き込みは直列化され、後続トランザクションは待機。
  • 読み込みはスナップショット分離を採用し、トランザクション開始時点の一貫したデータを参照可能。
  • 分離レベルは SERIALIZABLE 相当 ですが、PostgreSQL と異なり write skew が発生する場合があります。

課金・クォータは以下の指標でカウントされます。

  • 行読み込み数(スキャン数)
  • 行書き込み数
  • ストレージ使用量

特に行読み込み数はフルスキャンが走ると大きく増えるため、インデックス設計とクエリチューニング が重要になります。


Turso では ベクトル検索 にも対応しています。

  • ベクトルを FLOAT32BLOB 型のカラムに保存
  • 類似度関数 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 はサポートされています。

同時書き込みには弱いので、並列書き込みが多いアプリケーションでは厳しいですが、読み込み中心のアプリケーションならば、良い選択肢になりそうでした。

実際に使ってみて、メリット・デメリットがよりわかってきたらまた記事にしようと思います。

Thank you!
Thank you!
URLをコピーしました

コメントを送る

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