@nanodb-orm/plugin-sharding
v0.1.0
Published
Advanced sharding router for nanodb-orm (post-v1)
Readme
@nanodb-orm/plugin-sharding
Advanced sharding router for nanodb-orm (post-v1).
Install
npm install @nanodb-orm/plugin-shardingUsage
import { createShardedDatabase } from '@nanodb-orm/plugin-sharding';
import { schema } from 'nanodb-orm';
const users = schema.table('users', {
id: schema.text('id').primaryKey(),
name: schema.text('name').notNull(),
});
const db = await createShardedDatabase({
tables: { users },
shards: [
{ id: 'shard-0', connectionUrl: 'libsql://shard0.turso.io', authToken: '...' },
{ id: 'shard-1', connectionUrl: 'libsql://shard1.turso.io', authToken: '...' },
],
shardKey: (_table, data) => {
const id = String(data.id ?? '');
return id.charCodeAt(0) % 2 === 0 ? 'shard-0' : 'shard-1';
},
preview: { enabled: true },
});
const shardDb = db.shardBy(users, { id: 'user-123' });
await shardDb.insert(users).values({ id: 'user-123', name: 'Alice' });Notes
- Sharding is advanced and guarded by
preview: { enabled: true }. - Cross-shard joins and transactions are not supported.
- Use
db.shard(id)for explicit shard access. - Use
db.broadcast(fn)to run the same task on all shards.
