FOSSLC is a non-profit organization that specializes in technology and know-how to record conferences with excellent quality. Click on the icons below to view great videos from communities we are actively involved with:

 

PostgreSQL as a secret weapon for high-performance Ruby on Rails applications

in PGCon, PGCon2010, Programming, PostgreSQL, Ruby
PostgreSQLRuby

Location

Ottawa, ON
Canada
45° 24' 41.6592" N, 75° 41' 53.4984" W

This session will cover lessons learned about Ruby on Rails development using PostgreSQL. From the database-centric view the session will explain Rails best practices, taking advantage of RoR strong points, dealing with its weak points, PostgreSQL strong and weak points, and using advanced SQL features in web applications. The session will demonstrate how PostgreSQL is used to speedup Rails code, making slow things in your web application fast and impossible things - possible. The session will also discuss the peculiarities of complex enterprise apps and show that PostgreSQL is an ideal open source match for their development.

Topics covered will include:

Our experience with Ruby on Rails and PostgreSQL combo:

    * performance characteristics of Ruby applications
    * Rails advantages
    * PostgreSQL advantages

How to optimize Rails with PostgreSQL:

    * doing as much as possible in SQL
    * preloading attributes and associations
    * using Postgres' arrays for even faster preloading
    * generating and executing SQL queries instead of manipulating data with ORM

How to optimize Rails application by moving logic to the PostgreSQL database:

    * efficient trees
    * efficient pagination
    * efficient access control system with roles and privileges
    * efficient data analysis and aggregation

How to deal with PostgreSQL limitations:

    * optimizer forcing subselects for the whole result set despite limit/offset
    * optimizer not being able to estimate the resulting set size of the generate_series() function call
    * "in" in where conditions forcing joins
    * need for pushing down conditions in certain cases
    * avoiding on-disk sorts
    * selecting records holding group-wise maximum without windowing functions (pre 8.4)
    * using "not exists" as a cure to bad performance of "not in" conditions

How to make your database faster:

    * improving shared database performance under severe memory restrictions
    * realistic explain analyze
    * Postgres-specific performance tips

How to keep your database and application robust:

    * getting the right compromise between ORM and the database
    * best practices for database schema development and maintaining data integrity
    * performance testing and benchmarking
    * performance monitoring

Minutes: 
63
Event: 
PGCon2009
Speaker: 
Gleb Arshinov
Oleksandr Dymo
Filmed: 
21.05.2010