None of this is for Alexandria. Different project, entirely. No large documents, at all.
Server? NFDB obviously.
Browser? IndexedDB + https://git.v0l.io/Kieran/snort/src/branch/main/packages/worker-relay (which can store more)
Desktop app? NostrDB with calls from your favorite C or Rust binding. No IPC or websockets required. Could maybe use nostr-relay-tray as well.
Mobile app? NostrDB.
An e-reader? Just SQLite. Keep it simple, and have an *application focused cache*. You don't need to store every event raw.
But you can store what you know the latest version of a book is, download it, or whatever.
Best tool for the job.
Discussion
Use custom DB schems
I am. π
You do realize that I test large database for a living, right?
Then why are you bothering about cache relays?
You'll see. π

I think it may be best to think about the cache relays once the app actually exists
All other apps have been built front-to-back, so I'm trying something different.
You can think whatever you want. It's a free protocol. π€π»
You can, nothing wrong there.
Also, Iβm planning on making a binary protocol for NFDB relays. Almost identical to JSON but with less data usage and may have some additional support for semantic search features
My personal opinion is leave it as a stub until you get there. Think about it a bit, design the code so it can be added, but until you get there donβt bother