Batch API
LibSQL Batch API μ€λͺ : μΆμ²
libSQL ν΄λΌμ΄μΈνΈ λΌμ΄λΈλ¬λ¦¬μμ batchλ μμμ νΈλμμ μΌλ‘ μμλλ‘ μ€νλλ νλ μ΄μμ SQL λ¬Έμ λλ€. νΈλμμ μ libSQL λ°±μλμ μν΄ μ μ΄λ©λλ€. λͺ¨λ λ¬Έμ΄ μ±κ³΅νλ©΄ νΈλμμ μ΄ μ»€λ°λ©λλ€. λ¬Έ μ€ νλλΌλ μ€ν¨νλ©΄ μ 체 νΈλμμ μ΄ λ‘€λ°±λκ³ λ³κ²½ μ¬νμ΄ μ μ©λμ§ μμ΅λλ€.
D1 Batch API μ€λͺ : μΆμ²
Batchingμ λ¨μΌ νΈμΆ λ΄μμ μ¬λ¬ SQL λ¬Έμ λ°μ΄ν°λ² μ΄μ€λ‘ μ μ‘ν©λλ€. μ΄λ D1μ λν λ€νΈμν¬ μ볡 μ§μ° μκ°μ μ€μ¬ μ±λ₯μ ν° μν₯μ λ―ΈμΉ μ μμ΅λλ€. D1μ μλ μ»€λ° λͺ¨λλ‘ μλν©λλ€. μ°λ¦¬μ ꡬνμ λͺ©λ‘μ κ° λ¬Έμ΄ μμ°¨μ μΌλ‘, λΉλμμ μΌλ‘ μ€νλκ³ μ»€λ°λ¨μ 보μ₯ν©λλ€. μΌκ΄ μ²λ¦¬λ λ¬Έμ SQL νΈλμμ μ λλ€. μνμ€μ λ¬Έμ΄ μ€ν¨νλ©΄ ν΄λΉ νΉμ λ¬Έμ λν μ€λ₯κ° λ°νλκ³ μ 체 μνμ€κ° μ€λ¨λκ±°λ λ‘€λ°±λ©λλ€.
Drizzle ORMμ LibSQL, Neon λ° D1μ λν΄ SQL λ¬Έμ μΌκ΄ μ²λ¦¬λ‘ μ€ννλ APIλ₯Ό μ 곡ν©λλ€:
const batchResponse: BatchResponse = await db.batch([
db.insert(usersTable).values({ id: 1, name: 'John' }).returning({ id: usersTable.id }),
db.update(usersTable).set({ name: 'Dan' }).where(eq(usersTable.id, 1)),
db.query.usersTable.findMany({}),
db.select().from(usersTable).where(eq(usersTable.id, 1)),
db.select({ id: usersTable.id, invitedBy: usersTable.invitedBy }).from(usersTable),
]);μ΄ μμ μμ batchResponseμ νμ
μ λ€μκ³Ό κ°μ΅λλ€:
type BatchResponse = [
{
id: number;
}[],
ResultSet,
{
id: number;
name: string;
verified: number;
invitedBy: number | null;
}[],
{
id: number;
name: string;
verified: number;
invitedBy: number | null;
}[],
{
id: number;
invitedBy: number | null;
}[],
]db.batch λ΄λΆμμ μ¬μ©ν μ μλ λͺ¨λ κ°λ₯ν λΉλ:
db.all(),
db.get(),
db.values(),
db.run(),
db.execute(),
db.query.<table>.findMany(),
db.query.<table>.findFirst(),
db.select()...,
db.update()...,
db.delete()...,
db.insert()...,