I agree with you 100%.<p>An abstracted interface for your datalayer is a must have.<p>Many startups and projects begin with a single db and grow into new dbs as the business requirements change.<p>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.<p>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.<p>I believe that Postgres is the best choice in that scenario, as it is extremely mature and has an incredible amount of flexibility.