Skip to content

libSQL v.s. SQLite

libSQL 是從 SQLite fork 出來的專案,所以:

  • SQL 語法 幾乎完全相同
  • 檔案格式 相容
  • 架構能力更強

可以把它理解成:

SQLite + Server + Replication + HTTP API

1️⃣ 相同的地方

libSQL 基本上繼承 SQLite 的核心。

功能SQLitelibSQL
SQL syntax
SQLite file format
ACID transaction
Single DB file

例如:

sql
CREATE TABLE users(
  id INTEGER PRIMARY KEY,
  name TEXT
);

兩者都一樣。

甚至 SQLite DB file 可以直接給 libSQL 用


2️⃣ libSQL 多出的能力

libSQL 為了解決 SQLite 的限制,增加了 server 能力。

功能SQLitelibSQL
Embedded DB
Client-server
HTTP API
Replication
Edge database
Remote connection

例如你 log 裡看到:

HTTP connection on 8080
gRPC connection on 5001

這是 SQLite 沒有的。


3️⃣ 架構差異

SQLite

典型架構:

Application

  SQLite library

   DB file

完全 embedded


libSQL

server 架構:

Application

 HTTP / gRPC

 libsql server (sqld)

 SQLite engine

   DB file

多了一層 database server


4️⃣ 為什麼會有 libSQL

SQLite 有幾個限制:

SQLite 問題
不能遠端連線
沒有 replication
沒有 cluster
不能 edge sync

所以 Turso 團隊做了 libSQL。


5️⃣ 相容性

好消息是:

SQLite tools

大部分可用於 libSQL

例如:

  • SQLite DB file
  • SQL syntax
  • migration

都相容。


6️⃣ 一句話理解

SQLite = embedded database
libSQL = distributed SQLite server

或更直白:

libSQL ≈ SQLite server edition

💡 很多人不知道的一個事實

其實:

  • Turso
  • Fly.io edge DB

背後都是 libSQL