PostgreSQL

This was originally posted at the scotunes blog. I wrote this before I tried to install PostgreSQL.

In my day job I use SQL Server. But I’ve always wanted to learn another database system, because I believe knowing more than one will make me a better developer on both platforms.

When selecting a database platform for my latest data analysis project, I identified the following requirements: automatic source control, simple builds and deployment, easy unit testing, and spatial support, and an affordable total cost.

The PostgreSQL community seems at least as active as the SQL Server community in providing these features. I guess you get more options in the open source world. For each tool class below, the example tool is just the first I heard a reasonable recommendation for – there is at least one more. All the PostgreSQL tools are open source.

For source control, builds and schema deployment, apgdiff. Compare SQL Compare in the SQL Server world, which is great, but too expensive for personal use.

For a unit testing framework implemented within the database, pgTap. Compare tSQLt for SQL Server. tSQLt is open source, but immature.

For spatial support, PostGIS. SQL Server understands spatial data out the box. (It’s hardly a core component of a relational database system, but I can only applaud, because spatial queries are very powerful and look cool.)

Because I’ve not implemented the database part of my project yet, I’ve got nothing to lose by choosing an unfamilar technology except a couple of drunken weekends. And there is so much to gain by learning a new system.

That’s why I’ve chosen PostgreSQL.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s