www.it-ebooks.info PostgreSQL Server Programming Extend PostgreSQL and integrate the database layer into your development framework Hannu Krosing Jim Mlodgenski Kirk Roybal BIRMINGHAM - MUMBAI www.it-ebooks.info PostgreSQL Server Programming Copyright © 2013 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. First published: June 2013 Production Reference: 1180613 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-84951-698-3 www.packtpub.com Cover Image by Hannu Krosing ([email protected]) www.it-ebooks.info Credits Authors Project Coordinator Hannu Krosing Shraddha Vora Jim Mlodgenski Proofreader Kirk Roybal Joel T. Johnson Reviewer Indexer Gabriele Bartolini Priya Subramani Acquisition Editor Graphics Sarah Cullington Ronak Dhruv Lead Technical Editor Production Coordinator Susmita Panda Arvindkumar Gupta Technical Editors Cover Work Veronica Fernandes Arvindkumar Gupta Vaibhav Pawar Kirti Pujari Amit Ramadas www.it-ebooks.info About the Authors Hannu Krosing was a PostgreSQL user before it was rewritten to use SQL as its main query language in 1995. So, he has both the historic perspective of its development and almost 20 years of experience using it for solving various real-life problems. Hannu was the first Database Administrator and Database Architect at Skype, where he invented the sharding language PL/Proxy that allows scaling the user database to work with billions of users. Since leaving Skype at the end of 2006—about a year after it was bought up by eBay—Hannu has been working as a PostgreSQL consultant with 2ndQuadrant, the premier PostgreSQL consultancy with global reach and local presence in most of the world. Hannu has co-authored another Packt Publishing book, PostgreSQL 9 Administration Cookbook, together with one of the main PostgreSQL developers, Simon Riggs. I want to sincerely thank my wife Evelyn for her support while writing this book. Jim Mlodgenski is the CTO of OpenSCG, a professional services company focused on leveraging open source technologies for strategic advantage. He was formerly the CEO of StormDB, a database cloud company focused on horizontal scalability. Prior to StormDB, Jim held deeply technical roles at Cirrus Technology, Inc., EnterpriseDB, and Fusion Technologies. Jim is also a fervent advocate of PostgreSQL. He is a member of the board of the United States PostgreSQL Association, as well as being a part of the organizing teams of the New York PostgreSQL User Group and Philadelphia PostgreSQL User Groups. www.it-ebooks.info Kirk Roybal has been active in the PostgreSQL community since 1998. He has helped to organize user groups in Houston, Dallas, and Bloomington, IL. He has mentored many junior database administrators and provided cross training for senior database engineers. He has provided solutions using PostgreSQL for reporting, business intelligence, data warehousing, applications, and development support. Kirk saw the value of PostgreSQL when the first small business customer asked for a web application. At the time, competitive database products were either extremely immature, or cost prohibitive. Kirk has stood by the choice of PostgreSQL for many years now. His expertise is founded on keeping up with features and capabilities as they have become available. Writing a book has been a unique experience for me. Many people fantasize about it, few start one, and even fewer get to publication. I am proud to be part of a team that actually made it to the book shelf (itself an diminishing breed). Thank you Sarah Cullington from Packt Publishing for giving me a chance to participate in the project. I imagine that the PostgreSQL community will be better served by this information, and I hope that they receive this as a reward for the time that they have invested in me over the years. A book only has the value that the readers give it. Thank you to the PostgreSQL community for all of the technical, personal, and professional development help you have given me. The PostgreSQL community is a great bunch of people, and I have enjoyed the company of many of them. I hope to contribute more to this project in the future, and I hope you find my contributions as valuable as I find yours. Thank you to my family. Firstly, for giving me a reason to succeed. Also, thank you for listening to the gobbledygook and nodding appreciatively. Have you ever had your family ask you what you were doing, and answered with a function? Try it. No, then again, don't try it. They may just have you involuntarily checked in somewhere. www.it-ebooks.info About the Reviewer Gabriele Bartolini has been a long time open-source programmer and has been writing Linux/Unix applications in C and C++ for over 10 years, specializing in search engines and web analytics with large databases. Gabriele has a degree in Statistics from the University of Florence. His areas of expertise are data mining and data warehousing, having worked on web traffic analysis in Australia and Italy. Gabriele is a consultant with 2ndQuadrant and an active member of the international PostgreSQL community. Gabriele currently lives in Prato, a small but vibrant city located in the northern part of Tuscany, Italy. His second home is Melbourne, Australia, where he has studied at Monash University and worked in the ICT sector. His hobbies include calcio (football or soccer, depending on which part of the world you come from) and playing his Fender Stratocaster electric guitar. Thanks to my family, in particular Cathy who encourages always something new to learn. www.it-ebooks.info www.PacktPub.com Support files, eBooks, discount offers and more You might want to visit www.PacktPub.com for support files and downloads related to your book. Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at [email protected] for more details. At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks. http://PacktLib.PacktPub.com Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can access, read and search across Packt's entire library of books. Why Subscribe? f Fully searchable across every book published by Packt f Copy and paste, print and bookmark content f On demand and accessible via web browser Free Access for Packt account holders If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view nine entirely free books. Simply use your login credentials for immediate access. www.it-ebooks.info www.it-ebooks.info Table of Contents Preface 1 Chapter 1: What Is a PostgreSQL Server? 7 Why program in the server? 9 Using PL/pgSQL for integrity checks 10 About this book's code examples 12 Switching to the expanded display 13 Moving beyond simple functions 14 Data comparisons using operators 14 Managing related data with triggers 16 Auditing changes 19 Data cleaning 25 Custom sort orders 26 Programming best practices 27 KISS – keep it simple stupid 27 DRY – don't repeat yourself 28 YAGNI – you ain't gonna need it 28 SOA – service-oriented architecture 29 Type extensibility 29 On caching 30 Wrap up – why program in the server? 31 Performance 31 Ease of maintenance 32 Simple ways to tighten security 32 Summary 32 Chapter 2: Server Programming Environment 33 Cost of acquisition 34 Availability of developers 35 Licensing 36 www.it-ebooks.info