Pardon my ignorance, but it sounds like you are developing a database. What does your file system do better than sqlite3 or a time series db?
Discussion
Just read the comment you're responding to.
The biggest challenges with designing a Nostr Relay isn’t the tech. Persistence strategy, architecture, platforms and language trade-offs are reasonably well understood.
The big issue is nips. How the clients implement them, when to build them, test cases. These all change with time. So it can feel like building on quicksand.
I do agree that it is chaotic. One thing that should stay true is NIPS should not change once merged unless to fix actual bugs. After that it should be a new NIP so that the NIPS can be unique capability identifiers.
Databases are either general purpose and therefore aren't optimized to the specific situation (e.g. sqlite3, which isn't even very concurrent) or else they are massive things that can optimize into a plethora of different situations (e.g. postgres). So you either suffer the "not optimal" or the "massive". By rolling your own, you suffer neither.
I'm doing it because it is fun and is a learning experience. I am well aware that I am reinventing the wheel. My brother is a core postgres developer. We have spoken on the phone and he understands what I am doing and says that it is similar to what postgres already does and why don't I use postgres? Because I wouldn't learn anything if I just used postgres. And it would be massive and a deployment nightmare.
I'm using sled (a key value database) as the underlying technology of my indices, so strictly speaking I am using a database and I'm not entirely reinventing. The remaining parts that I chose to write myself were not too difficult. The specific use cases of a personal nostr relay are rather constrained so I can optimize for them fairly quickly without it taking months of work.