Skip to content
richoH edited this page Apr 27, 2012 · 5 revisions

Abstract

This app will obviously need a datastore. I'd sooner gauge out my own eyes than using my-fucking-sql on another project, but with that said, add pros and cons as you see fit. I'm divvying this into two seperate tables for ephemeral and permanent storage

Permanent

MySQL

Pros

  • Shallow learning curve for new devs
  • Well supported by the community
  • Easy to set up replication (in the short term, at least in the number of mirrors we're likely to see)

Cons

  • Is only a true RDBMS with 3rd party addons
  • Only recently managed ACID compliance (?!)
  • Serious performance issues
  • Limited stored procedures support
  • Search is only possible via 3rd parties (Sphinx)
  • Indexes are shallow and stupid

PostgreSQL

Pros

  • Stupid fast
  • Easy to extend at the database level
  • Massive stored procedure support (pl/python, pl/sql, pl/PHP, pl/Ruby)
  • Smart query planner
  • Great debugger

Cons

  • Steeper learning curve
  • Tuning isn't trivial
  • Replication is still sketchy (This may be out of date, I seem to remember TL making big strides before 9.1)

Responses

are we supposed to put our thoughts here? if so: (otherwise delete this)

  • NanoyMaster - I'm preferable to MySQL, yes I do realise the benefits to others, but it is already known, both for current devs and new people that are likley to join and well just easier.

Ephemeral

Redis

Pros

  • Internal locking mechanisms are fantastic and eliminate a lot of common coder errors
  • Resque is a really mature project for building worker queues

Cons

  • Reasonbly high overhead
  • Can be a pain to debug
  • (redis is a ruby thing which means marshalling jobs in such a way that ruby can parse them)

memcached

Pros

  • Stupid fast

Cons

  • Has no abstraction (Can also be viewed as a plus if we want to do something cool)
Clone this wiki locally