When should one use a traditional table-per-object schema in MySQL versus a centralized blob store with separate index tables a la Friendfeed?
-
Here's Bret Taylor's post on the FriendFeed data architecture: http://bret.appspot.com/entry/how-friendfeed-uses-mysql I've heard of other websites using similar architectures. Is this becoming the default method to scale MySQL in a rapidly growing and changing environment? Do the benefits of ease of maintenance and flexibility outweigh the drawbacks of data duplication and loss of (easily) ensured consistency?
-
Answer:
Relational databases were originally designed to allow analysis of relationships between data using complex queries. Originally, databases did not come under the traffic profile we experience today - you just loaded all the data into the database in batches and then your business analyst team or whoever would run complex queries to discover relationships between the data. You didn't have millions of users connecting to your database just to retrieve their user data or whatever. In the modern internet world, databases have been somewhat conscripted into being object stores. The majority of internet applications do not need the tight relational or integrity constraints designed into databases (not that MySQL is a shining example of such an implementation, so maybe it all balances out...) such as ensuring against data duplication or tight consistency. If your application does not have to do with (1) the military, (2) finance, or (3) health care, you should seriously consider a datastore that doesn't use the "traditional" schema you mention in your question. I am a pretty big fan of the data architecture designed by FriendFeed, though I haven't used it, but mostly because I think the table-per-object schema is a mismatch to modern application architectures and only in wide usage due to historical legacy reasons (i.e. tradition). (disclosure: I work at Facebook, and we recently acquired FriendFeed)
Yishan Wong at Quora Visit the source
Related Q & A:
- Should I use a code repository if I am the only one working on a project?Best solution by Programmers
- How does MySQL reindex a table?Best solution by Stack Overflow
- How do I use a genetic code table?Best solution by biology.about.com
- Can you use a Dual Channel amp for one speeker?Best solution by Yahoo! Answers
- How to get a job when no one is hiring you?Best solution by ChaCha
Just Added Q & A:
- How many active mobile subscribers are there in China?Best solution by Quora
- How to find the right vacation?Best solution by bookit.com
- How To Make Your Own Primer?Best solution by thekrazycouponlady.com
- How do you get the domain & range?Best solution by ChaCha
- How do you open pop up blockers?Best solution by Yahoo! Answers
For every problem there is a solution! Proved by Solucija.
-
Got an issue and looking for advice?
-
Ask Solucija to search every corner of the Web for help.
-
Get workable solutions and helpful tips in a moment.
Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.