Feature Suggestions: Additional local data stores, e.g. `MongitaStore`, `FerretDB`
https://github.com/scottrogowski/mongita
It would be great to have more file-based DB options in maggma. One such option (which I think @rkingsbury first told me about) is mongita. This is mostly a note to myself that it would be nice to implement this one day. Perhaps I'll come back to this.
One general concern I have is whether the existing MontyStore or a potential MongitaStore would be suitable for high-throughput calculations. It'd be worth knowing if either package prevents a race condition where multiple jobs try to read/write to the database at the same time. The README for mongita at least mentions that it has (experimental) lock support for multithreading behavior, which is promising.
Edit: Looks like we are out of luck there for Mongita.
Mongita is an embedded database. It is not process-safe. When you have multiple clients, a traditional server/client database is the correct choice.
Same for MontyDB, as noted here.
There's nothing in maggma specifically to resolve this, right @munrojm?
Yeah, thanks for the suggestion @arosen93 . Definitely no objections to implementing a MongitaStore someday. I looked briefly at mongita as a substitute for mongomock to power MemoryStore, but I noted the following limitations:
mongita
does not support many query operations including$regexor$exists. It also doesn't supportbulk_writeorestimated_document_count` although those can be worked around.
https://github.com/openjournals/joss-reviews/issues/5995#issuecomment-1810759481
Worth jotting down FerretDB here, as highlighted by @utf above. This one seems particularly promising!