Author: Mocky Habeeb
Publisher: Addison-Wesley, 2010
Aimed at: Developers who want to use or evaluate SimpleDB
Cons: Lacks clarity
Reviewed by: Ian Elliot
A whole book on SimpleDB? Is is, after all, called "Simple" DB. However, this book isn't so huge as to overdo the explanations or go off topic and, if you are well-versed in SQL or traditional database ideas, then you might find the SimpleDB isn't quite as simple as you expect. It does have elements of SQL but, being a cloud database, there is a lot that doesn't work in the same way.
In fact the first problem you will face is working out when it is a good idea to use SimpleDB at all. The first chapter deals with this topic by explaining what SimpleDB is and what moving to the cloud means in terms of costs and its effect on working practices. There is also a lot of "persuasion" that using something other than SQL isn't a mortal sin. There is a particularly nice section on "Dodging Copies of C.J. Date" and how to cope with other SQL devotees and their reaction to anything other than pure SQL.
My guess is that, if you believe that SQL is the one and only true way to deal with database, the evangelism isn't going to be effective in changing your mind. If this is that case you are going to have to forgo the delights of the cloud because SQL really doesn't take advantage of the way it works.
Some readers will get all they need to know from Chapter 1 but, if you are still with the program, Chapter 2 explaines how to get started with SimpleDB. After signing up to Amazon AWS your first task is to build an Administration tool using Java. This makes heavy use of a client implementation which is discussed in Chapter 10. This probably isn't a good way approach to SimpleDB because the reader doesn't get to see any real working code; just method calls which don't really explain what is going on. It might be a useful tool to have but it isn't a good introduction to SimpleDB.
Chapter 2 does a better job of introducing the basics and you should give the earlier chapter a quick read and move on. It describes how to work with three of the main libraries - Java, PHP, C# and Python. Chapter 3 continues the introduction with a "code-snippet tour" of the API. This shows you how to do the basic operations in each of the languages.
The remainder of the book deals with more advanced topics. Select and bulk data operations are the subject of Chapters 4 and 5. Chapter 6 is a general look at the consequences and benefits of working in a distributed way. It deals with issues of availability and eventual consistency. It also discusses the particular problem of working with items bigger than 1K, including working with S3.
From here the book looks at lifecycle, security and performance until we reach Chapters 10 and 11, where the client code that was used in Chapter 2 is introduced.
Overall this is not the best possible book on the topic because it doesn't make it really easy for the complete beginner. If, on the other hand, you are a fairly competent programmer then this has a lot to offer. If you are thinking of using SimpleDB then you probably should buy this book to find out if this is the way to get the job done.
With the caveat that the reader isn't a complete beginner this is certainly worth getting hold of if you are using, or are planning to use, SimpleDB.