In Where have all the good databases gone Adam Bosworth visits the subject of databases, and the differences between what customers need, and what the database vendors offer. Since posting the article he has received a lot of criticism. For my part I think the questions Adam asks and the points raised are all good.
From a pragmatic standpoint, a good database is whatever is suitable for the needs of the particular customer and the particular application. Anything beyond the needs of the application is just overhead.
We should be concerned, on the one hand, with folks developing database applications without understanding of the ACID model. On the other hand as developers we should understand what exactly the application needs from the database.
A good database could be a anything from simple text file, to a collection of files in the filesystem, up to a full-featured RDBMS – what qualifies as “good” depends on the application.
Most of the current mainstream commercial databases are built around the relational database model. Most (all?) the mainstream commercial databases started development when “practical” constraints on CPU, memory and disk usage where very much different from today. What all this leads to is a series of constraints and tradeoffs built into the design of the database that may no longer be appropriate.