Interview with Josh Berkus of PostgreSQL

The BSD family of operating systems isn’t the only BSD licensed software whose roots originate from the University of California at Berkeley. While many are familiar with Berkeley’s contributions to Unix, fewer are aware of the role it played in the formation of modern database systems. The PostgreSQL project has transformed that codebase into a database that is known for its rock-solid stabiity and advanced features. In this interview, Josh Berkus provides some insights into PostgreSQL from his perspective as a core developer.

Actually I checked the mailing lists a while ago, but the EDB guys basically put their foot where their mouth is, they contribute a lot to the project as they state on their website, once the feature has paid off it is donated. And they keep it that way as it seems.

Therefore I am glad that the got Sony as customer recently, they really do a lot of work. (among others)

The interview was an interesting enough look at the PostgreSQL community, but I would love to know more about what is going to be in version 8.2 and 8.3. The TODO (http://www.postgresql.org/docs/faqs.TODO.html) lists lots of detail, but only a few of them are actually marked specifically for the next release, and most of them are minor or incremental fixes.

As I understand it, the next big things in store for PostgreSQL include the following:

– Table partitioning — it is currently possible to do, but is more an interesting usage of table inheritance than a formally specified feature. This allows the Oracle-like ability to spread a large table across multiple physical disks.

– Multi-master replication — This is not technically a part of the main PostgreSQL proeject, but Slony II (www.slony2.org) will become the de facto official M/M replication system for PostgreSQL.

– Actual stored procedures — PostgreSQL allows for user-defined functions but that is not exactly the same thing as a procedure. For example, a function must execute inside one and only one transaction, because otherwise it wouldn’t make sense to call a function inside an SQL query, and expect an atomic result. Procedures are small programs that can span multiple transactions, thus allowing the DBA to automate greater aspects of the system.

– Continued enhancements to the procedural language system. One big area is the lack of full cursor support inside pl/pgsql functions. You cannot move back and forth through a result cursor inside a function yet, and it looks like this might get added to version 8.2.

– Continued refinement of the type system (OK, this is more my wishlist than anything else). While there are some great new capabilities in version 8 and 8.1, it is still a little confusing and limiting at times. Composite types are different from custom base types (even though custom base types might be composite), which are then different from domains. In fact, domains can not be made against composite types, and composite types cannot specify constraints the way a domain can. In other words, sometimes you “can’t get there from here”. This all may seem esoteric to most SQL users, but if approached right, these things offer some fantastic advances in database design.

I’m sure there are other enhancements for PostgreSQL that I have missed here, and I’m not sure which of the above might be coming soon, but over all things are looking very promising for PostgreSQL.

Good interview overall, some interesting insights but one thing bothered me:

“If open source becomes only a development methodology, then we’ll lose a lot.”

Isn’t open source a development methodology only? Isn’t that the primary distinction between Free Software and Open Source Software? Isn’t this what RMS and the other FSF people have been on about since the OSI was initiatied? Open Source was coined to bring businesses in so they aren’t scared away by the rhetoric/philosopy.

Free Software includes a philosophy as well as a development model. Open Source is just licenses and a development model, what he precieves as being lost was never there.