Distribute read operations across different database replicas with the ZenStack ORM.
- ZenStack (version >=
3.3.0) - Node.js (version >=
20.0.0)
npm install @visualbravo/zenstack-replicas
pnpm add @visualbravo/zenstack-replicas
bun add @visualbravo/zenstack-replicasimport { schema } from './zenstack/schema'
import { ZenStackClient } from '@zenstackhq/orm'
import { defineReplicasPlugin } from '@visualbravo/zenstack-replicas'
const replica1 = new ZenStackClient(schema, {
...
})
const replica2 = new ZenStackClient(schema, {
...
})
const primary = new ZenStackClient(schema, {
...
})
const client = primary.$use(
defineReplicasPlugin({
replicas: [replica1, replica2],
}),
)
// replica1
await client.user.findMany()
// replica2
await client.user.findMany()
// replica1
await client.user.findMany()
// primary (write operation)
await client.user.create({
data: {
email: 'test@test.com',
},
})Note
Replicas are queried in a round-robin pattern.
MIT