Drizzle <> SQLite
Drizzle은 libsql과 better-sqlite3 드라이버를 통한 SQLite 연결을 네이티브로 지원합니다.
두 드라이버를 사용하고 Drizzle ORM과 통합하면서 발견한 libsql과 better-sqlite3 드라이버 간의 몇 가지 차이점이 있습니다. 예를 들어:
드라이버 레벨에서는 두 드라이버 간에 큰 차이가 없을 수 있지만, 주요 차이점은 libSQL이 SQLite 파일과 Turso 원격 데이터베이스 모두에 연결할 수 있다는 것입니다. LibSQL은 SQLite의 포크로, 표준 SQLite에 비해 다음과 같은 추가 기능을 제공합니다:
libSQL드라이버에서는 더 많은 ALTER 문을 사용할 수 있어,better-sqlite3만 사용할 때보다 스키마를 더 쉽게 관리할 수 있습니다.- 암호화 저장 기능을 네이티브로 설정할 수 있습니다.
- SQLite 데이터베이스에서 지원하는 대부분의 확장 기능이
libSQL에서도 지원됩니다.
libsql
Step 1 - 패키지 설치
npm
yarn
pnpm
bun
npm i drizzle-orm @libsql/client
npm i -D drizzle-kit
Step 2 - 드라이버 초기화
Drizzle은 모든 @libsql/client 드라이버 변형을 네이티브로 지원합니다:
@libsql/client | defaults to node import, automatically changes to web if target or platform is set for bundler, e.g. esbuild --platform=browser |
@libsql/client/node | node compatible module, supports :memory:, file, wss, http and turso connection protocols |
@libsql/client/web | module for fullstack web frameworks like next, nuxt, astro, etc. |
@libsql/client/http | module for http and https connection protocols |
@libsql/client/ws | module for ws and wss connection protocols |
@libsql/client/sqlite3 | module for :memory: and file connection protocols |
@libsql/client-wasm | Separate experimental package for WASM |
default
node
web
http
web sockets
wasm
import { drizzle } from 'drizzle-orm/libsql';
const db = drizzle({ connection: {
url: process.env.DATABASE_URL,
authToken: process.env.DATABASE_AUTH_TOKEN
}});Step 3 - 쿼리 실행
libsql
libsql with config
import { drizzle } from 'drizzle-orm/libsql';
const db = drizzle(process.env.DATABASE_URL);
const result = await db.execute('select 1');동기 연결이 필요한 경우, 드라이버 연결을 지정하고 Drizzle 인스턴스에 전달하는 추가 연결 API를 사용할 수 있습니다.
import { drizzle } from 'drizzle-orm/libsql';
import { createClient } from '@libsql/client';
const client = createClient({ url: process.env.DATABASE_URL, authToken: process.env.DATABASE_AUTH_TOKEN });
const db = drizzle(client);
const result = await db.execute('select 1');better-sqlite3
Step 1 - 패키지 설치
npm
yarn
pnpm
bun
npm i drizzle-orm better-sqlite3
npm i -D drizzle-kit @types/better-sqlite3
Step 2 - 드라이버 초기화 및 쿼리 실행
better-sqlite3
better-sqlite3 with config
import { drizzle } from 'drizzle-orm/better-sqlite3';
const db = drizzle(process.env.DATABASE_URL);
const result = await db.execute('select 1');기존 드라이버를 제공해야 하는 경우:
import { drizzle } from 'drizzle-orm/better-sqlite3';
import Database from 'better-sqlite3';
const sqlite = new Database('sqlite.db');
const db = drizzle({ client: sqlite });
const result = await db.execute('select 1');