SQLite pluggable storage backend (scalability path beyond 10K users) #17
Labels
No labels
prio_critical
prio_low
type_bug
type_contact
type_issue
type_lead
type_question
type_story
type_task
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
lhumina_code/hero_osis#17
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
OSIS currently stores each object as an individual OTOML file on disk with Tantivy full-text search indexing. This works well for small-to-medium deployments (1K-10K entities) and has excellent properties:
Problem at Scale
At 50K+ users with millions of transactions, file-per-object has limitations:
Request
Add SQLite as a pluggable storage backend option alongside the existing file backend. The API stays the same (
_new,_get,_set,_delete,_list,_find) — only the storage layer changes.Benefits:
Current Workaround
The freezone project (https://forge.ourworld.tf/znzfreezone_code) runs 2 backend replicas sharing a GlusterFS RWX volume. We hit a seed race condition where both replicas created duplicate records because Tantivy writes weren't visible across processes fast enough. Fixed with a dedup pass after seeding + rolling update deploy procedure.
See: znzfreezone_code/home#51
Priority
Not urgent. Current deployment (~100 users) works fine with file backend. This is for future scaling.