If you need a relational database and have to have deeply nested datastructures, Postgres will get the job done. As for best that would vary from project to project. also because you kan turn postgres to a KV store.
If you should find you didn`t need relational data. or that at one point you need flat filesystem, or a in memory system for perfomance. Maybe you even want to combine disk based and memory based storage for optimized read speeds.
Starting with the database decision at the beginning might lock you into that decision later ,especially if other people are involved.
Use ecto or make a layer that wraps data to any data source and decide what to use sometime before deployment.
Especially with larger projects the designed software is usually never the actually built software.