PostgreSQL is Our New Default

PostgreSQL’s popularity is growing, and rightfully so: it’s reliable, performant, and competes well with traditional (and expensive) enterprise databases like Oracle and SQL Server. PostgreSQL is completely community driven and has a rich ecosystem of tools and documentation. A few months ago, we released full support for Postgres 9.1 in the Engine Yard database stack. Today we are happy to announce that we are making PostgreSQL the default database for all new Engine Yard Cloud applications.

Why do you want to use PostgreSQL?

Enumerating all the features that make PostgreSQL a fantastic database would make for a tremendously long blogpost. Instead we’ll tell you a few of the reasons why we use it extensively in our internal applications, and why we recommend you do the same. ###Full-text search support With PostgreSQL there is no need to deploy a standalone full-text search engine like Apache Solr, Sphinx, or ElasticSearch. Right out of the box you can easily discover word matches (even on singular and plural words) and also use different dictionaries. There are several gems that make full-text search on PostgreSQL extremely easy to use and we encourage you to give them a try. ###Less locking Some database objects, such as indexes, can be created without holding a lock on the table. This leads to smoother migrations in your application code and quicker deployments. ###Support for procedural languages If Active Record or PostgreSQL do not completely “get” the way you want to communicate with your database, you can always use any of the supported procedural languages (PLs). For example, PLV8 brings the V8 JavaScript engine into PostgreSQL and allows you to write any function in JavaScript that can be called from SQL. ###Flexible replication modes We set up your PostgreSQL instance using asynchronous replication, but PostgreSQL supports synchronous replication out of the box. Synchronous replication offers you the guarantee that all changes made by a transaction have been transferred to remote standby nodes. You can even take this further by selecting this type of replication in individual transactions. ###Exciting things are coming in the next version PostgreSQL 9.2 will ship with native JSON support, covering indexes, replication and performance improvements, and many more features. We are eagerly awaiting this release and will make it available in Early Access as soon as it’s released by the PostgreSQL community.

How does PostgreSQL as default impact existing environments?

If your application is already running on MySQL, nothing changes. However, if you want to continue using MySQL for your applications, remember to select it each time that you create a new environment.

What extras do we make available to you?

PostgreSQL comes with many extensions that enhance its functionality above and beyond what traditional Relational Database Management Systems (RDBMS) can do. Since last year, we’ve curated and maintained these recipes, and we QA them every time we introduce a new database version. Please let us know if there is a particular extension you’d like us to add; we’re happy to help.

Want to know more?

Check out the following resources:

  • PostgreSQL's official [Documentation](http://www.postgresql.org/docs/).
  • RailsCast's fantastic series on [Migrating to Postgres](http://railscasts.com/episodes/342-migrating-to-postgresql),[ Full-text search ](http://railscasts.com/episodes/343-full-text-search-in-postgresql), [HStore](http://railscasts.com/episodes/345-hstore), and [Queue Classic](http://railscasts.com/episodes/344-queue-classic).
  • Craig Kerstiens's [Why Postgres series](http://www.craigkerstiens.com/2012/05/07/why-postgres-part-2/).
  • What is new in Postgres 9.2.
  • If you are in the area, swing by any of the [San Francisco PostgreSQL User Group ](http://www.meetup.com/postgresql-1/)(PUG) meetups. It's a great place to learn new things and meet people in the PostgreSQL community.