So why would you use NoSQL rather than just our own hashtable? NoSQL allows you to keep a hash table separate from the application server so you can devote an entire servers RAM to the table to increase performance. It also allows you to distribute the table across multiple machines to in essence create a big distributed hashtable. NoSQL is great replacement for any type of data that you would have previously accessed by doing a "SELECT * FROM table WHERE primary_key = ?". Furthermore since NoSQL doesn't have to do indexing, or any of the other overhead associated with a normal relational database it can be much faster.