Zero dependency is better.

Your database does not need to be a separate process. It can just be a library embedded in your application.

If your application is distributed across several physical servers, then your database can be as well.

I'm interested -- would you be willing to develop on this a little?

For a single server, SQLite, or boltdb[0]

I've never had to scale horizontally. I develop in Go and you can get very far along with just vertical scaling (aka beefier hardware).

Therefore I can't give concrete examples of a distributed db-as-a-library.

But all that you need is to extend the functions that fetch data to not just fetch from disk but from "peers" as well. For this to work you need servers (instances) to know about each other, and as you add more they also get added to their peers - sort of like a bittorrent network. I don't think it's difficult to do.

SQLite might not be suited for being distributed (although RQlite[1] claims to have done it).

Making a distributed data storage based on boltdb[0] is probably more feasible.

Whatever the case, there's no reason why a data storage engine can't be a library, even if it's distributed.

[0]: https://github.com/boltdb/bolt

[1]: https://github.com/rqlite/rqlite