An abstracted interface for your datalayer is a must have.
Many startups and projects begin with a single db and grow into new dbs as the business requirements change.
Obviously if you know your data model well enough you can foresee a lot of these requirements and pick the right tool for the job.
However, you will usually need to pick a db to start with and hope that it will accommodate as many of those unknowns as possible.
I believe that Postgres is the best choice in that scenario, as it is extremely mature and has an incredible amount of flexibility.
Somehow that makes me feel better that at least, I'm on the right path.
An abstracted interface for your datalayer is a must have.
Many startups and projects begin with a single db and grow into new dbs as the business requirements change.
Obviously if you know your data model well enough you can foresee a lot of these requirements and pick the right tool for the job.
However, you will usually need to pick a db to start with and hope that it will accommodate as many of those unknowns as possible.
I believe that Postgres is the best choice in that scenario, as it is extremely mature and has an incredible amount of flexibility.