Making sure the in-memory cache doesn't get too big
Recovery when something goes wrong (computer loses power)
Recovery of data when there is a partial HDD failure
Compaction creating performance problems
Handling of duplicate requests/out of order request
etc.. etc...
Basically performance and readability and data consistency are hard, especially for a database that has a lot of concurrent users...
My toy one was super fast (I don't remember the stats on top of my head), and was good enough for good weather conditions, but I realized, in order to make it actually production ready, there was so much more to do and it was not worth for me to spend more on it, since there are so many good options out there, and SQL-Lite was becoming a de-facto standard on mobile (both iOS and Android adopted it then).