Ingest a document
- Pick a chunker for the document type
- Embed each chunk: LRU, then Redis, then the model
- Append to the WAL with CRC32 and fsync
- Apply to HNSW, BM25 and the document store
- Stream to followers and remote regions
Architecture
One process, one index, many front ends. This page follows a write, a query and a RAG call through NebulaDB, then shows how nodes and regions stay in step.
01 · The front door
Ordering is deliberate. Audit runs before the follower guard and auth, so rejected writes are still recorded. Health and metrics bypass the chain so probes survive an abusive client.
02 · Query planes
semantic_match as HNSW top-kcontext events03 · Durability
The index in RAM is a cache of the log. If the process dies at any instant, the next boot reconstructs exactly the acknowledged state.
┌─────────────┬─────────────┬───────────────────────┐
│ len (u32 LE)│ crc32 (u32) │ bincode(WalRecord) │
└─────────────┴─────────────┴───────────────────────┘
/var/lib/nebula/<node>/
wal/0000000001.nwal
wal/0000000002.nwal
snapshots/snap-00042.nsnap
cluster/follower.cursor
Snapshots are written to a temporary file and atomically renamed, so a partial snapshot is never visible.
Vectors are in the records, so no embedding calls are made during recovery.
A frame whose length or CRC does not check out is cut back to the last good record.
/admin/durability reports segments, size and sequence range.
04 · Multi-region
Each region accepts writes only for the buckets it homes, replicates both ways, and serves every read locally. There is one writer per bucket, so there is nothing to merge across oceans.
05 · Zero-downtime change
Upgrading or replacing a node is a Kubernetes resource the operator drives through explicit phases, so a stuck step is visible and resumable rather than a half-finished script.
06 · Kubernetes
apiVersion: nebula.nebuladb.io/v1alpha1 kind: NebulaCluster metadata: name: nebula-prod spec: replication: enabled: true followers: 2 lagByteThreshold: 104857600 # 100 MiB autoscaling: { enabled: true, minFollowers: 2, maxFollowers: 5 } backup: enabled: true schedule: "0 */6 * * *" retain: 14 security: apiKeysSecretRef: { name: nebula-auth, key: api_keys } regions: - name: us-east-1 - name: us-west-2
More examples in operator/examples/: basic cluster, bucket seeding, backup schedule, swap, scale and failover rebalances, region failover.
Design records cover multi-region active-active, backup and restore, Raft, CDC, parallel replay, zero-downtime rebalance, graceful degradation, MCP and Azure AI Search compatibility.