Good reasons NOT to use a relational database?
database, nosql, sql
Solution
Plain text files in a filesystem
- Very simple to create and edit
- Easy for users to manipulate with simple tools (i.e. text editors, grep etc)
- Efficient storage of binary documents
XML or JSON files on disk
- As above, but with a bit more ability to validate the structure.
Spreadsheet / CSV file
- Very easy model for business users to understand
Subversion (or similar disk based version control system)
- Very good support for versioning of data
Berkeley DB (Basically, a disk based hashtable)
- Very simple conceptually (just un-typed key/value)
- Quite fast
- No administration overhead
- Supports transactions I believe
Amazon's Simple DB
- Much like Berkeley DB I believe, but hosted
Google's App Engine Datastore
- Hosted and highly scalable
- Per document key-value storage (i.e. flexible data model)
CouchDB
- Document focus
- Simple storage of semi-structured / document based data
Native language collections (stored in memory or serialised on disk)
- Very tight language integration
Custom (hand-written) storage engine
- Potentially very high performance in required uses cases
I can't claim to know anything much about them, but you might also like to look into object database systems.
Problem
Can you please point to alternative data storage tools and give good reasons to use them instead of good-old relational databases? In my opinion, most applications rarely use the full power of SQL--it would be interesting to see how to build an SQL-free application.