¿Qué hace turso-db?
Turso (libSQL): SQLite replicado en el borde — configuración, consultas y patrones de replicación para aplicaciones serverless
¿Qué es Turso?
Turso es una base de datos SQLite distribuida geográficamente y construida sobre libSQL. Está diseñada para aplicaciones serverless que necesitan baja latencia en todo el mundo, replicando datos en regiones periféricas.
Configuración
Para empezar, necesitas instalar la CLI de Turso:
curl -sSfL https://get.turso.tech | sh
O en macOS:
brew install tursodatabase/tap/turso
Luego, inicia sesión:
turso auth login
Crea una base de datos:
turso db create my-database
Obtén la URL de la base de datos y el token de acceso:
turso db show my-database --url
turso db tokens create my-database
Consultas básicas
Puedes ejecutar consultas SQL directamente con la CLI:
turso db shell my-database
O usando libSQL desde Node.js:
import { createClient } from '@libsql/client';
const client = createClient({
url: process.env.TURSO_DATABASE_URL,
authToken: process.env.TURSO_AUTH_TOKEN,
});
await client.execute('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)');
await client.execute('INSERT INTO users (name) VALUES (?)', ['Alice']);
const result = await client.execute('SELECT * FROM users');
console.log(result.rows);
Patrones de replicación
Turso replica automáticamente tus datos en regiones periféricas (edge). Puedes controlar las ubicaciones de replicación:
turso db locations
turso db replicate my-database --to mia # Miami, US
turso db replicate my-database --to lhr # London, UK
Para obtener una lista de regiones disponibles:
turso db locations --all
Uso con frameworks serverless
Cloudflare Workers
import { createClient } from '@libsql/client/web';
export default {
async fetch(request) {
const client = createClient({
url: env.TURSO_DATABASE_URL,
authToken: env.TURSO_AUTH_TOKEN,
});
const result = await client.execute('SELECT * FROM users');
return new Response(JSON.stringify(result.rows), {
headers: { 'Content-Type': 'application/json' },
});
}
}
Vercel Functions
import { createClient } from '@libsql/client';
export async function GET(request) {
const client = createClient({
url: process.env.TURSO_DATABASE_URL,
authToken: process.env.TURSO_AUTH_TOKEN,
});
const result = await client.execute('SELECT * FROM products');
return new Response(JSON.stringify(result.rows), {
headers: { 'Content-Type': 'application/json' },
});
}
Variables de entorno
TURSO_DATABASE_URL: URL de la base de datos TursoTURSO_AUTH_TOKEN: Token de autenticación para la base de datos