Review: PostgreSQL by Douglas
This is the text of my amazon review of this book. I gave it 3 stars - and a whole rant post, but that didn’t affect the rating I gave it. Honestly, I’d give it a pass, but it may fit the bill for some.
This book lives up to it’s claims for “the comprehensive guide to building, programming and administering postgresql databases”. I’m a MySQL guy, but may have to do a little pgsql to support a third party app, so I was looking for a book that would bring me up to speed.
The quick review is this… I give this book 3 stars, because it’s so huge and covers so much territory that, in my opinion, it does a middling job of it. I would have preferred a more focussed book. I think, given it’s goal of being so comprehensive, it is about as good as it could be and if you really need to know everything - from sql, to developing extensions, to embedding this in your c/c++ programs and administering things AND want a single book that covers it this is probably the book for you. If you don’t need quite that much, or are willing to go to more than one book to get it, I think you would be better served to look elsewhere.
The longer review…
Honestly, I don’t know why books on databases almost invariably are terribly dry reads, but this book, following the odds, falls into that category. It’s a hefty tome weighing in at about 1000 pages divided into 3 sections.
The first category, about a quarter of the book, is an introduction to sql and postgresql in particular. It does quite a nice job of introducing your standard sql commands, datatypes and basic administrative commands (like creating tables and the like). This part goes from basic to fairly advanced, covering topics like outer joins and creating new datatypes. I suspect it’ll be review for those familiar with sql but reasonably usable for those delving into sql, even if they don’t immediately understand all of the more advanced concepts.
The section ends with a chapter on performance, something I was particularly interested in given postgresql’s reputation. Here the authors talk about standard performancy things like indexes, using various tools to figure out what a particular query is actually doing, all worthwhile. But they never go into any detail about the performance implications of using some of the more advanced postgresql features like composite types and table inheritance. I was quite disappointed to find not even a whisper of this type of information in the book.
The second section, about half the book covers programming with postgresql. This is a very broad chapter - covering many aspects of what it means to program this database. From server side programming using PL/pgSQL to extending the database with custom functions and types. They discuss creating clients in c, c++, java, perl, php, tcl, python and .net. Each one of these languages gets a chapter about 30-50 pages long where they go over the basics of how that language typically connects to the database and then goes through a process of creating a basic client and refining over the course of 4 or 5 iterations to become more and more robust and full featured. This is the bulk of the book and because it’s so wide spread, I think most people will only be interested in one or two of these chapters - the rest of which will probably be uninteresting.
The last section is the final quarter of the book where they go over the administrative requirements of the database. They admirably try to direct people to download and compile their own binaries, but cover installation from binary on unix and windows. They have an excellent reference on the things you can tweak to configure the runtime environment. They also cover backing up the database, replication, internationalization and security. Although they mention performance optimization in the intro to the section, they don’t actually discuss it anywhere in the section.
So, to sum up. If you really need to know about all aspects of pgsql and are looking for a one stop shop, this book is - I think - as good as you’re going to find. But if you’re looking into only a particular aspect (developing, administereing, etc..) or don’t mind going to more than one, I feel confident that there’s other books out there that will cover those topics in better detail.







