After a hiatus from reading the book “Seven Database in Seven Weeks”, I finished it over the summer. The book had some new concepts to me that were not as easy to keep readings the “Seven Languages…” book. However, once I got into the habit of digesting it a little at a time, I was very glad I did. It contains a lot of valuable information on the landscape of modern day databases.
The databases covered in the book were:
This was the most familiar chapter to me because of my experience with MySQL, Postgres and relational databases in general. The book covered some advanced topics by “day3”.
A REST based database. Having read this chapter after spending several months developing a REST API for a client, I found the chapter quite interesting. The concepts are quite foreign compared to the normal relational SQL that I am used to. Perhaps I’ll never use it, but it is a novel way to think of data. This chapter presented my first taste of a database clusters.
This chapter started out ok, but by the end I was just pushing on to be done with it. From the chapter, it sounds like the database is only used on really huge sites and datasets, so I doubt I will make use of it.. I also do not think I fully understand the advantage of fetching data in columns instead of rows.
Like MongoDB, CouchDB stores it’s date in JSON format. Unlike Mongo, this database supposedly works well for small and large data sets. Instead of the more relational database type queries of Mongo, Couch uses REST calls over HTTP like Riak. It also keeps version information through revisions. One last note is that it is built in the Erlang language, which as I discussed in the “7 Languages in 7 Weeks” book is built for fault tolerance, and concurrency.
Neo4J stores relationships as graphs - connected vertices with unidirectional or bidirectional edges. Along with HBase, this chapter had the most foreign concepts to me compared to my existing relational database experience. From my computer science background I know all about graph traversal; but to see the concepts being used as a database was new to me.
- A key-value store that can store complex objects such as lists, sets, maps and hashes. It can be used as a fast cache between program logic and a more persistent data model. I found this database intuitive and expect to integrate it into future web applications.
All in all, the book was informative and broadened my perspective on current databases. With the exception of the HBase chapter, I enjoyed reading about each database and learned many new things.
I found this book very useful to quickly be introduced to the modern database landscape and NoSQL paradigm. In general, it looks like databases are being built for the modern web - supporting a REST interface and JSON datastructure. As the author mentions, the REST interface also enables (programming) language-agnostic usage of each database.