Scalability and Massive-Capacity Sites

This post is a collection of thoughts and comments from some divergent sources on database organization that I have had in storage for some time:

Dare Obasanjo‘s Posts
Dare Obasanjo has posted at least a couple of times on database normalization (or denormalization); in his article When Not to Normalize your SQL Database, and, more recently in his article, Project Cassandra: Facebook’s Open Source Alternative to Google BigTable.

Jeff Attwood‘s Posts
Jeff Attwood also chimed in with his Maybe Normalizing Isn’t Normal article. I am particularly interested in the "database war stories" list that Jeff has in the post as they are all very interesting stories from very successful companies.

InfoQ Interview with Dan Pritchett
In the interview with Dan Pritchett on Archetecture at eBay, Dan drops some pretty large pearls of wisdom:
Evaluating the importance of data: " uses transactions but doesn’t use transactions". "A lot of it is driven by availability." "There’s critical data and non-critical data". "Out of necessity, we have to split our databases."

One comment I was wondering about, "there’s just data we’re willing to lose", leads me to ask, "why are you collecting it?"

Leveraging where processing occurs based on performance – "Primary key joins are, actually, far more efficient to do in the database than they are in app space"

"We want the database to be, essentially, a reliable data store and keep as much stuff as possible in logic so we have more control over it. … same reason we don’t use stored procedures. Anything that happens in the database is invisible to the developer for all practical purposes."

Leave a Reply

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

You are commenting using your 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