Core Architecture

BeaverDB is built on a simple but powerful premise: One File, Multiple Modalities.

Instead of being a simple key-value store or a pure vector database, it acts as a “meta-database” that manages multiple specialized data structures (Dictionaries, Lists, Logs, Vectors) within a single SQLite file.

The Facade Pattern

The entry point for the entire system is the BeaverDB class in beaver.core. It acts as a Facade and a Resource Manager.

  • Facade: It provides factory methods (.dict(), .list(), .collection()) that hide the complexity of initializing specific managers.
  • Resource Manager: It holds the persistent SQLite connection pool and manages thread safety.

The Manager Pattern

BeaverDB does not implement data logic itself. Instead, it delegates to Managers.

When you call db.dict("settings"), BeaverDB: 1. Checks its internal _manager_cache to see if a manager for “settings” already exists. 2. If not, it initializes a DictManager(name="settings", db=self). 3. Returns the singleton instance.

This ensures that multiple calls to db.dict("settings") in the same process return the same python object, sharing locks and caches.

Schema Design

BeaverDB uses a fixed set of internal tables to store user data. These tables are created automatically on initialization.

Key-Value & Storage

Table Purpose Schema
beaver_dicts Stores all dictionaries dict_name, key, value, expires_at
beaver_lists Stores all lists list_name, item_order, item_value
beaver_blobs Stores binary files store_name, key, data, metadata
beaver_sketches Probabilistic structures name, type, config, data (BLOB)

Search & Vectors

Table Purpose Schema
beaver_collections Main document storage collection, item_id, item_vector, metadata
beaver_fts_index Virtual table for Full-Text Search (FTS5 Virtual Table)
beaver_trigrams N-grams for fuzzy matching collection, trigram, item_id
beaver_edges Graph connections collection, source, target, label, weight

Streams & Queues

Table Purpose Schema
beaver_logs Time-series logs log_name, timestamp, data
beaver_priority_queues Job queues queue_name, priority, timestamp, data
beaver_pubsub_log Message bus history channel_name, timestamp, message_payload

System

Table Purpose Schema
beaver_lock_waiters Inter-process locks lock_name, waiter_id, expires_at