At the moment there is a lot of discussion of NoSQL databases. Rather than referring to a single thing, this term is more of a catch-all that refers to a number of different non-relational database designs. In fact, it is often said that a more accurate term would be NoREL databases. The main technologies used in NoREL databases are:
- Document storage, where rather than data being split up into individual fields, it is stored as much larger, structured documents, like XML documents. e.g. MongoDB
- Graph storage. e.g. FlockDB, written in the Scala language to run Twitter.
- Key-value lookup. Gives fast performance and good scalability, but obviously has the disadvantage that how you retrieve data is limited to the key you have chosen, whereas in a standard relational DB you can search on all tables and fields. e.g. Berkeley DB, Mongo
There is an interesting talk that was given at QCon that shows how BerkeleyDB was used to create a very high performance, scalable DB system. The scaling was achieved by using a second piece of technology called Project Voldemort, which allows you to spread a key-value database across multiple servers. Although BDB is the usual key-value DB used with Voldemort, in theory it can plug into any key-value DB, which means the system is highly flexible.
The QCon talk is available here:
The Project Voldemort website is: