ในยุคที่แอปพลิเคชันต้องรองรับผู้ใช้จากทั่วโลก ปัญหาหนึ่งที่นักพัฒนาพบเสมอคือ Latency ของฐานข้อมูล ไม่ว่า Backend จะเร็วแค่ไหน ถ้าฐานข้อมูลอยู่ที่ US East แต่ผู้ใช้อยู่เอเชียตะวันออกเฉียงใต้ Query ก็ต้องวิ่งข้ามมหาสมุทรแปซิฟิกไปกลับ ทำให้เกิด Latency สูง 200-400ms ต่อ Request ซึ่งส่งผลเสียต่อประสบการณ์ผู้ใช้อย่างมาก
Edge Database คือแนวคิดที่ย้ายฐานข้อมูลไปอยู่ใกล้ผู้ใช้มากที่สุด เหมือนกับที่ CDN ทำกับไฟล์ Static แต่คราวนี้ทำกับข้อมูลที่ Query ได้จริง และ Turso คือหนึ่งในผู้เล่นหลักที่กำลังปฏิวัติวงการ Edge Database ในปี 2026 บทความนี้จะพาคุณเข้าใจ Edge Database ตั้งแต่พื้นฐานจนถึงการนำไปใช้งานจริง
Edge Database คืออะไร?
Edge Database คือฐานข้อมูลที่ถูกออกแบบให้ทำงานบน Edge Network หรือเครือข่ายที่กระจายอยู่ตามภูมิภาคต่างๆ ทั่วโลก แทนที่จะมีฐานข้อมูลเพียงจุดเดียวใน Data Center เดียว Edge Database จะสร้าง Replica หรือสำเนาของข้อมูลไว้ที่ Edge Location ต่างๆ ทำให้ผู้ใช้สามารถอ่านข้อมูลจากจุดที่ใกล้ตัวเองมากที่สุด
แนวคิดนี้คล้ายกับ Content Delivery Network (CDN) ที่เก็บสำเนาไฟล์ Static ไว้ทั่วโลก แต่ Edge Database ไปไกลกว่านั้นเพราะรองรับการ Query ข้อมูลแบบ Dynamic ได้ ไม่ใช่แค่ Serve ไฟล์คงที่ ผู้ใช้ที่กรุงเทพฯ จะ Query ข้อมูลจาก Replica ที่สิงคโปร์ (ใกล้สุด) แทนที่จะวิ่งไปถึง Virginia
ข้อดีของ Edge Database
- Low Latency — ลด Round-trip time จาก 200-400ms เหลือ 5-20ms เพราะข้อมูลอยู่ใกล้ผู้ใช้
- Global Distribution — รองรับผู้ใช้ทั่วโลกด้วยประสิทธิภาพที่สม่ำเสมอ
- Serverless Friendly — ออกแบบมาสำหรับ Serverless Architecture ไม่ต้องจัดการ Connection Pool
- Cost Effective — ใช้ SQLite-based technology ที่เบาและประหยัดทรัพยากร
- Offline Support — Embedded Replica สามารถทำงานแบบ Offline ได้
Turso คืออะไร?
Turso คือ Edge Database ที่สร้างจาก libSQL ซึ่งเป็น Open Source Fork ของ SQLite โดย Turso ได้ขยายความสามารถของ SQLite ให้รองรับการทำงานแบบ Client-Server, Replication และ Multi-tenancy ที่ SQLite ปกติทำไม่ได้ Turso ก่อตั้งโดย Glauber Costa และทีมที่มีประสบการณ์ด้าน Database Internals อย่างลึกซึ้ง
libSQL คืออะไร?
libSQL คือ Fork ของ SQLite ที่ Turso สร้างขึ้นเพื่อเพิ่มฟีเจอร์ที่ SQLite ไม่มี เนื่องจาก SQLite เป็นโปรเจกต์ที่ไม่รับ Contribution จากภายนอก (ควบคุมโดย D. Richard Hipp คนเดียว) ทีม Turso จึงตัดสินใจ Fork ออกมาเพื่อเพิ่มความสามารถ:
- Server Mode — libSQL สามารถทำงานเป็น Server รับ Connection ผ่าน HTTP/WebSocket ได้
- Replication — รองรับ Primary-Replica Replication สำหรับ Global Distribution
- ALTER TABLE ที่ดีกว่า — รองรับ ALTER TABLE แบบที่ SQLite ปกติทำไม่ได้
- WASM User-Defined Functions — เขียน Custom Function ด้วย WebAssembly
- Encryption at Rest — เข้ารหัสข้อมูลบนดิสก์
สถาปัตยกรรมของ Turso
Turso ใช้สถาปัตยกรรมที่เรียกว่า Embedded Replicas ซึ่งเป็นจุดเด่นสำคัญ:
# สถาปัตยกรรม Turso
# ┌─────────────────────────────────────────────────┐
# │ Primary Database (Write) │
# │ เช่น Region: US East │
# └──────────┬──────────┬──────────┬────────────────┘
# │ │ │ Replication
# ┌──────▼──┐ ┌─────▼───┐ ┌───▼──────┐
# │ Replica │ │ Replica │ │ Replica │
# │ Asia │ │ Europe │ │ S.America│
# └─────────┘ └─────────┘ └──────────┘
#
# Embedded Replica:
# ┌──────────────────────────────────┐
# │ Your App Server / Edge Function │
# │ ┌────────────────────────────┐ │
# │ │ Embedded SQLite Replica │ │
# │ │ (Local File / In-Memory) │ │
# │ └────────────────────────────┘ │
# │ Reads: Local (0ms!) │
# │ Writes: Forward to Primary │
# └──────────────────────────────────┘
ข้อดีของ Embedded Replica คือการอ่านข้อมูลจะเกิดขึ้นบน Local SQLite File ในเครื่องเดียวกับ Application ทำให้ Read Latency แทบจะเป็น 0ms ส่วนการเขียนจะถูก Forward ไปยัง Primary Database แล้ว Replicate กลับมาอัพเดท Local Replica
เริ่มต้นใช้งาน Turso
# ติดตั้ง Turso CLI
curl -sSfL https://get.tur.so/install.sh | bash
# Login
turso auth login
# สร้าง Database
turso db create my-app-db
# สร้าง Database ที่ Region เฉพาะ
turso db create my-app-db --location sin # Singapore
# ดู Database ทั้งหมด
turso db list
# สร้าง Replica ที่ Region อื่น
turso db replicate my-app-db nrt # Tokyo (Narita)
turso db replicate my-app-db hkg # Hong Kong
# สร้าง Auth Token
turso db tokens create my-app-db
# เข้า Shell
turso db shell my-app-db
ใช้ Turso กับ JavaScript/TypeScript
// ติดตั้ง
// npm install @libsql/client
import { createClient } from "@libsql/client";
// Remote connection
const client = createClient({
url: "libsql://my-app-db-username.turso.io",
authToken: process.env.TURSO_AUTH_TOKEN,
});
// Query
const result = await client.execute("SELECT * FROM users WHERE id = ?", [1]);
console.log(result.rows);
// Insert
await client.execute({
sql: "INSERT INTO users (name, email) VALUES (?, ?)",
args: ["somchai", "somchai@example.com"],
});
// Transaction
await client.transaction(async (tx) => {
await tx.execute("UPDATE accounts SET balance = balance - 100 WHERE id = ?", [1]);
await tx.execute("UPDATE accounts SET balance = balance + 100 WHERE id = ?", [2]);
});
// Batch (หลาย Statement ใน 1 Round-trip)
await client.batch([
{ sql: "INSERT INTO logs (msg) VALUES (?)", args: ["action1"] },
{ sql: "INSERT INTO logs (msg) VALUES (?)", args: ["action2"] },
]);
Embedded Replica ใน Application
import { createClient } from "@libsql/client";
// Embedded Replica — อ่านจาก Local, เขียนไป Primary
const client = createClient({
url: "file:local-replica.db", // Local SQLite file
syncUrl: "libsql://my-app-db-user.turso.io", // Primary
authToken: process.env.TURSO_AUTH_TOKEN,
syncInterval: 60, // Sync ทุก 60 วินาที
});
// Manual sync
await client.sync();
// Read — จาก Local file (เร็วมาก!)
const users = await client.execute("SELECT * FROM users");
// Write — Forward ไป Primary แล้ว Sync กลับ
await client.execute("INSERT INTO users (name) VALUES (?)", ["new user"]);
Turso กับ Drizzle ORM
Drizzle ORM เป็น TypeScript ORM ที่ได้รับความนิยมสูงในปี 2026 และรองรับ Turso/libSQL อย่างเต็มรูปแบบ:
// drizzle.config.ts
import type { Config } from "drizzle-kit";
export default {
schema: "./src/db/schema.ts",
out: "./drizzle",
dialect: "turso",
dbCredentials: {
url: process.env.TURSO_DATABASE_URL!,
authToken: process.env.TURSO_AUTH_TOKEN!,
},
} satisfies Config;
// src/db/schema.ts
import { sqliteTable, text, integer } from "drizzle-orm/sqlite-core";
export const users = sqliteTable("users", {
id: integer("id").primaryKey({ autoIncrement: true }),
name: text("name").notNull(),
email: text("email").notNull().unique(),
createdAt: text("created_at").default("CURRENT_TIMESTAMP"),
});
export const posts = sqliteTable("posts", {
id: integer("id").primaryKey({ autoIncrement: true }),
title: text("title").notNull(),
content: text("content"),
authorId: integer("author_id").references(() => users.id),
});
// src/db/index.ts
import { drizzle } from "drizzle-orm/libsql";
import { createClient } from "@libsql/client";
import * as schema from "./schema";
const client = createClient({
url: process.env.TURSO_DATABASE_URL!,
authToken: process.env.TURSO_AUTH_TOKEN!,
});
export const db = drizzle(client, { schema });
// การใช้งาน
const allUsers = await db.select().from(schema.users);
const userPosts = await db.query.users.findMany({
with: { posts: true },
});
เปรียบเทียบ Edge Database: Turso vs PlanetScale vs Neon vs Supabase
| Feature | Turso | PlanetScale | Neon | Supabase |
|---|---|---|---|---|
| Engine | libSQL (SQLite) | Vitess (MySQL) | PostgreSQL | PostgreSQL |
| Edge Replicas | Yes (Embedded) | No (ปิดตัว) | Read Replicas | Read Replicas |
| Serverless | Native | Native | Yes (Branching) | Partial |
| Free Tier | 9 GB, 500 DB | ปิดบริการ | 512 MB | 500 MB |
| Latency (Edge) | <1ms (Embedded) | N/A | ~50-100ms | ~50-150ms |
| Branching | No | Yes | Yes | No |
| Multi-tenant | Native (1 DB/tenant) | No | No | Row Level Security |
| Protocol | HTTP/WebSocket | MySQL | PostgreSQL/HTTP | PostgreSQL/HTTP |
Cloudflare D1 — Edge Database จาก Cloudflare
D1 คือ Serverless SQL Database จาก Cloudflare ที่ทำงานบน Edge Network ของ Cloudflare เช่นกัน D1 ก็ใช้ SQLite เป็น Engine เบื้องหลัง เหมาะสำหรับใช้คู่กับ Cloudflare Workers
// wrangler.toml
[[d1_databases]]
binding = "DB"
database_name = "my-d1-db"
database_id = "xxxx-xxxx-xxxx"
// Cloudflare Worker with D1
export default {
async fetch(request, env) {
const { results } = await env.DB.prepare(
"SELECT * FROM products WHERE category = ?"
).bind("electronics").all();
return Response.json(results);
},
};
// Migration
// wrangler d1 migrations create my-d1-db init
// wrangler d1 migrations apply my-d1-db
D1 มีข้อจำกัดคือทำงานได้เฉพาะใน Cloudflare Workers ecosystem เท่านั้น ไม่สามารถเชื่อมต่อจากภายนอก Cloudflare ได้โดยตรง ต่างจาก Turso ที่ใช้ได้จากทุกที่ แต่ถ้าคุณอยู่ใน Cloudflare ecosystem อยู่แล้ว D1 เป็นตัวเลือกที่สะดวกมาก
LiteFS — SQLite Replication จาก Fly.io
LiteFS เป็น FUSE-based filesystem จาก Fly.io ที่ทำให้ SQLite สามารถ Replicate ข้ามหลาย Node ได้ LiteFS ทำงานที่ระดับ Filesystem โดยจับ Write ที่เกิดขึ้นกับ SQLite file แล้ว Replicate ไปยัง Node อื่น
# litefs.yml
fuse:
dir: "/litefs"
data:
dir: "/var/lib/litefs"
lease:
type: "consul"
advertise-url: "http://$HOSTNAME:20202"
consul:
url: "http://consul:8500"
key: "litefs/primary"
exec:
- cmd: "node server.js"
# Application ใช้ SQLite ที่ /litefs/db ตามปกติ
# LiteFS จัดการ Replication ให้โปร่งใส
ข้อดีของ LiteFS คือ Application ไม่ต้องเปลี่ยน Code เลย ใช้ SQLite driver ปกติ LiteFS จัดการ Replication ให้ที่ระดับ Filesystem แต่ข้อเสียคือต้อง Deploy บน Fly.io หรือจัดการ FUSE mount เอง
DuckDB สำหรับ Analytics ที่ Edge
DuckDB คือ Analytical Database ที่ออกแบบมาสำหรับ OLAP (Online Analytical Processing) ทำงานแบบ Embedded เหมือน SQLite แต่เชี่ยวชาญด้าน Analytics Query เช่น Aggregation, Window Functions, Columnar Storage
// DuckDB สำหรับ Edge Analytics
import { Database } from "duckdb-async";
const db = await Database.create(":memory:");
// โหลดข้อมูลจาก Parquet บน S3
await db.run(`
CREATE TABLE sales AS
SELECT * FROM read_parquet('s3://bucket/sales-2026-*.parquet')
`);
// Analytical Query
const result = await db.all(`
SELECT
region,
DATE_TRUNC('month', sale_date) as month,
SUM(amount) as total_sales,
COUNT(*) as num_transactions,
AVG(amount) as avg_sale
FROM sales
GROUP BY region, month
ORDER BY total_sales DESC
`);
DuckDB ไม่ใช่ Edge Database โดยตรง แต่สามารถใช้ที่ Edge สำหรับ Analytics ได้ เช่น ฝัง DuckDB ใน Edge Function แล้วให้มัน Query Parquet Files จาก S3 ทำให้ได้ Analytics ที่ Edge โดยไม่ต้องส่ง Query กลับไป Central Data Warehouse
เมื่อไหร่ที่ Edge Database เหมาะสม?
เหมาะสม (Use Cases ที่ดี)
- Read-Heavy Applications — อ่านเยอะ เขียนน้อย เช่น Blog, Product Catalog, Documentation
- Global Applications — ผู้ใช้กระจายทั่วโลก ต้องการ Latency สม่ำเสมอทุก Region
- Serverless/Edge Functions — ใช้กับ Vercel Edge Functions, Cloudflare Workers, Deno Deploy
- Multi-tenant SaaS — Turso รองรับ 1 Database ต่อ 1 Tenant ซึ่งเป็น Pattern ที่ดีมาก
- Mobile/Desktop Apps — Embedded Replica ทำงานแบบ Offline ได้
- Configuration & Feature Flags — อ่านบ่อยมาก เขียนน้อยมาก ต้องเร็ว
ไม่เหมาะสม (ใช้ Central DB แทน)
- Write-Heavy Applications — เพราะ Write ต้อง Forward ไป Primary เสมอ ไม่ได้ประโยชน์จาก Edge
- Strong Consistency Required — ถ้าต้องการ Strong Consistency ทุก Read (เช่น Financial Transactions) Edge Replica อาจมี Stale Data
- Complex Joins & Relations — SQLite-based edge databases มีข้อจำกัดเรื่อง Complex Queries เทียบกับ PostgreSQL
- Large Datasets (>10GB) — Edge Database ออกแบบมาสำหรับ Dataset ขนาดเล็ก-กลาง
Edge Database Patterns
Pattern 1: Read Replicas ที่ Edge
// อ่านจาก Edge Replica, เขียนไป Primary
const readClient = createClient({
url: "file:./local.db",
syncUrl: "libsql://primary.turso.io",
authToken: TOKEN,
});
const writeClient = createClient({
url: "libsql://primary.turso.io",
authToken: TOKEN,
});
// Read path — Local (fast)
app.get("/products/:id", async (req, res) => {
const product = await readClient.execute(
"SELECT * FROM products WHERE id = ?", [req.params.id]
);
res.json(product.rows[0]);
});
// Write path — Primary (consistent)
app.post("/orders", async (req, res) => {
await writeClient.execute(
"INSERT INTO orders (user_id, product_id, qty) VALUES (?, ?, ?)",
[req.body.userId, req.body.productId, req.body.qty]
);
await readClient.sync(); // Sync ทันทีหลัง write
res.json({ success: true });
});
Pattern 2: Database per Tenant
// Turso รองรับ Database จำนวนมาก (Free tier: 500 DBs)
// สร้าง 1 DB ต่อ 1 Tenant
async function getTenantClient(tenantId: string) {
return createClient({
url: `libsql://${tenantId}-myapp.turso.io`,
authToken: process.env.TURSO_GROUP_TOKEN,
});
}
app.use(async (req, res, next) => {
const tenantId = req.headers["x-tenant-id"];
req.db = await getTenantClient(tenantId);
next();
});
app.get("/data", async (req, res) => {
const result = await req.db.execute("SELECT * FROM data");
res.json(result.rows);
});
Pattern 3: Multi-Region with Conflict Awareness
// สำหรับ App ที่ต้อง Write จากหลาย Region
// ใช้ Conflict-free Strategy
// Approach 1: Route Write ไป Primary เสมอ
// ง่ายที่สุด ไม่มี Conflict แต่ Write Latency สูง
// Approach 2: Last-Write-Wins (LWW)
// ใช้ Timestamp ตัดสิน
const insertWithLWW = `
INSERT INTO settings (key, value, updated_at)
VALUES (?, ?, datetime('now'))
ON CONFLICT(key) DO UPDATE SET
value = excluded.value,
updated_at = excluded.updated_at
WHERE excluded.updated_at > settings.updated_at
`;
// Approach 3: CRDT-style Counters
// สำหรับ Counter ที่ต้อง Increment จากหลาย Region
// เก็บ Delta แทน Absolute Value
Consistency Models ที่ Edge
ความเข้าใจเรื่อง Consistency Model เป็นสิ่งสำคัญมากเมื่อใช้ Edge Database เพราะข้อมูลที่อ่านจาก Replica อาจไม่ตรงกับ Primary เสมอไป:
| Model | คำอธิบาย | ใช้กับ |
|---|---|---|
| Strong Consistency | อ่านได้ข้อมูลล่าสุดเสมอ | Primary DB โดยตรง |
| Eventual Consistency | ข้อมูลจะตรงกันในที่สุด อาจมี Delay | Edge Replicas ทั่วไป |
| Bounded Staleness | ข้อมูลเก่าไม่เกิน X วินาที | Turso (sync interval) |
| Read-Your-Writes | เห็นข้อมูลที่ตัวเองเขียนเสมอ | Turso (sync after write) |
// ตัวอย่าง: Read-Your-Writes Consistency
async function writeAndRead(data) {
// 1. Write ไป Primary
await primaryClient.execute(
"INSERT INTO items (name) VALUES (?)", [data.name]
);
// 2. Sync Replica ทันที
await replicaClient.sync();
// 3. Read จาก Replica — จะเห็นข้อมูลที่เพิ่งเขียน
const result = await replicaClient.execute(
"SELECT * FROM items ORDER BY id DESC LIMIT 1"
);
return result.rows[0];
}
Edge Database สำหรับ Next.js และ Nuxt
Next.js + Turso
// app/api/products/route.ts (Next.js App Router)
import { createClient } from "@libsql/client/web";
const db = createClient({
url: process.env.TURSO_DATABASE_URL!,
authToken: process.env.TURSO_AUTH_TOKEN!,
});
// Edge Runtime — ทำงานบน Edge Network ของ Vercel
export const runtime = "edge";
export async function GET(request: Request) {
const { searchParams } = new URL(request.url);
const category = searchParams.get("category");
const result = await db.execute({
sql: "SELECT * FROM products WHERE category = ? ORDER BY name",
args: [category],
});
return Response.json(result.rows);
}
Nuxt 3 + Turso
// server/utils/db.ts
import { createClient } from "@libsql/client/web";
let _db: ReturnType<typeof createClient>;
export function useDB() {
if (!_db) {
_db = createClient({
url: useRuntimeConfig().tursoUrl,
authToken: useRuntimeConfig().tursoToken,
});
}
return _db;
}
// server/api/posts.get.ts
export default defineEventHandler(async () => {
const db = useDB();
const result = await db.execute("SELECT * FROM posts ORDER BY created_at DESC");
return result.rows;
});
Pricing และ Free Tiers เปรียบเทียบ (2026)
| Service | Free Tier | Paid เริ่มต้น | จุดเด่น |
|---|---|---|---|
| Turso | 9 GB, 500 DBs, 1B reads/mo | $29/mo (Scaler) | Embedded Replica, Multi-tenant |
| Cloudflare D1 | 5 GB, 5M reads/day | $5/mo (Workers Paid) | Cloudflare ecosystem |
| Neon | 512 MB, Auto-suspend | $19/mo (Launch) | Branching, PostgreSQL |
| Supabase | 500 MB, 50K requests | $25/mo (Pro) | Auth, Storage, Realtime |
ข้อจำกัดของ Edge Database
Write Patterns
ข้อจำกัดที่สำคัญที่สุดของ Edge Database คือ Write Operations เพราะ Write ต้อง Forward ไปยัง Primary เสมอ ทำให้ Write Latency ไม่ได้ลดลงเหมือน Read นอกจากนี้ SQLite ยังมีข้อจำกัดเรื่อง Concurrent Write (ใช้ WAL mode ได้ 1 Writer ต่อครั้ง)
Conflict Resolution
เมื่อมีหลาย Region เขียนข้อมูลพร้อมกัน อาจเกิด Conflict ได้ Edge Database ส่วนใหญ่ใช้ Last-Write-Wins (LWW) ซึ่งอาจทำให้ข้อมูลบางอย่างหายไป ถ้าต้องการ Conflict Resolution ที่ซับซ้อนกว่านี้ต้องจัดการเองที่ Application Layer
ข้อจำกัดของ SQLite ที่ Edge
- ไม่รองรับ JSON Type เต็มรูปแบบเหมือน PostgreSQL (แม้จะมี json functions)
- ไม่มี LISTEN/NOTIFY สำหรับ Realtime
- Schema Migration ต้องระวัง (ALTER TABLE มีข้อจำกัด)
- ไม่มี Full-text Search ที่ดีเท่า PostgreSQL (แม้ FTS5 จะใช้ได้)
- ไม่รองรับ Stored Procedures
อนาคตของ Edge Computing + Database
แนวโน้มในปี 2026 และอนาคตอันใกล้:
- SQLite Renaissance — SQLite กลับมาได้รับความนิยมอย่างมากในฐานะ Production Database ไม่ใช่แค่ Development Database อีกต่อไป เพราะ Turso, D1, LiteFS ทำให้มันรองรับ Production Workload ได้
- Embedded Databases ทุกที่ — แนวคิด Embedded Replica จะแพร่หลายมากขึ้น แทนที่จะ Query ผ่าน Network ทุกครั้ง ข้อมูลจะอยู่ในเครื่องเดียวกับ Application
- CRDT-based Databases — ฐานข้อมูลที่ใช้ Conflict-free Replicated Data Types จะเพิ่มมากขึ้น ทำให้ Multi-writer ที่ Edge เป็นไปได้โดยไม่มี Conflict
- WebAssembly + Database — Wasm จะทำให้ Database Engine ทำงานได้ทุกที่ รวมถึง Browser ทำให้ Local-first Applications เป็นจริง
- AI at Edge + Edge DB — การรัน AI Model ที่ Edge ร่วมกับ Edge Database ทำให้ AI-powered Features ทำงานได้ด้วย Latency ต่ำมาก
Edge Database ไม่ได้มาแทนที่ PostgreSQL หรือ MySQL แต่เป็นเครื่องมือเพิ่มเติมในชุดเครื่องมือของนักพัฒนา ถ้า Application ของคุณต้องการ Low Latency สำหรับ Read-heavy Workload ที่มีผู้ใช้ทั่วโลก Edge Database อย่าง Turso คือตัวเลือกที่ควรพิจารณาอย่างจริงจัง
สรุป
Edge Database เป็นวิวัฒนาการสำคัญของวงการฐานข้อมูลในปี 2026 โดย Turso ได้พิสูจน์แล้วว่า SQLite สามารถเป็น Production Database ระดับ Global ได้ด้วยสถาปัตยกรรม Embedded Replica และ libSQL การเลือกใช้ Edge Database ต้องพิจารณาจาก Read/Write Ratio ความต้องการ Consistency และ Geographic Distribution ของผู้ใช้ สำหรับนักพัฒนาที่กำลังสร้าง Global Application ด้วย Next.js, Nuxt หรือ Serverless Functions การรู้จักและเข้าใจ Edge Database จะช่วยให้คุณสร้าง Application ที่เร็วกว่าเดิมหลายเท่า
เริ่มต้นวันนี้ด้วย turso auth login แล้วสร้าง Database แรกของคุณ คุณจะประทับใจกับ Read Latency ที่ต่ำจนแทบจะเป็น 0ms ด้วย Embedded Replica
