Skip to content

Zero-Knowledge Distributed Sharding

Scale FLASH DB horizontally across multiple physical or logical nodes using a Consistent Hashing Ring with Virtual Nodes.


1. Setting Up a Cluster Ring

javascript
import { FlashCluster, FlashDatabase } from 'flash-zk';

// Initialize Cluster with 64 Virtual Nodes per Shard
const cluster = new FlashCluster({ virtualNodes: 64 });

// Add regional shards
const shardEast = new FlashDatabase('shard_us_east', { storagePath: './data/east' });
const shardWest = new FlashDatabase('shard_us_west', { storagePath: './data/west' });
const shardEU   = new FlashDatabase('shard_eu_central', { storagePath: './data/eu' });

cluster.addShard('shard_us_east', shardEast);
cluster.addShard('shard_us_west', shardWest);
cluster.addShard('shard_eu_central', shardEU);

2. Deterministic Key Partitioning

Documents are partitioned deterministically across the ring without any central coordinator bottleneck:

javascript
// Automatically finds target shard for user ID
const { shardId, db } = cluster.getShardForKey('user_uuid_1049');

console.log('Target Shard:', shardId); // 'shard_us_east'
const userCol = db.collection('users');

Released under the Apache 2.0 License.