SF PUG video - PostgreSQL for high performance Rails apps
Here's a video from a few months ago - a talk given by Gleb Arshinov (CEO of Pluron) on June 9 2009 at the San Francisco PostgreSQL User's Group entitled "PostgreSQL as a Secret Weapon for High-Performance Ruby on Rails Applications". Here's the link to the mov file, and here are all the SFPUG videos. Note that the video file is 409 MB; I'm asking around to see if there's a version uploaded to YouTube or something.
Some notes on the presentation:
- Pluron makes Acunote, an Agile project management app. They have 4K customers (some at EngineYard, some internal). They use nginx+mongrel.
- Have used PostgreSQL from day one for their app.
- PostgreSQL has good SQL standard compliance, good documentation.
- Noted that PostgreSQL doesn't support bulk update (e.g., ON DUPLICATE KEY UPDATE). A good discussion here around the 21:00 about possible solutions and problems with race conditions and such. The slide has some text about replication but unfortunately he doesn't talk about that.
- Mentions Acunote's virtual attributes plugin
- Discusses their treatment of tree structures around 33:40.
- Talks about pagination at 37:00.
- Talks about their search language at 42:00. As far as I could tell they're not using Sphinx or any external search tool... not sure if they're using PostgreSQL full text search or not.
- Around 46:00 discusses using
any(array())vsin(). Interesting if you don't mind going database-specific in your Rails app. - At 1:03:00 suggests using SQL DDL via Rails DDL DSL (e.g.,
CREATE TABLEvscreate_table). Same for using SQL to do data changes in migrations. I've found that this is a good idea as well, especially when dealing with larger data sets. - Recommends using foreign key constraints - but using them to protect data integrity, not to implement business logic.
A great presentation with some good technical content... highly recommended!
Trackbacks
Use the following link to trackback from your own site:
http://railsonpostgresql.com/trackbacks?article_id=7


