However, every once in a while, you work on a project
where you probably think to yourself, "Why am I doing all this work?" The
project you're working on contains very simple bits of data or data that's
difficult to predict — you might get different data fields on
different days or even from transaction to transaction. If you were to
create a schema to predict what's coming down the pike at you, you'd end
up with tables that have lots of empty fields or lots of mapping tables.
This is an excellent intro to CouchDB even if you aren't a PHP developer.