mysql - Database type and engine for medium scale user content website -


using mysql basic storage of system/user data. need store/search messages (adding webmail functionality), , have analytic (on fly reports/graphs current , historical data, kind of data wearhouse) + means need store historical data.

so question is:
1) use mysql or use separate databases messages, analytics/historical data/user data? there live feeds on site heard mysql isn't with.

2) tables use mysql innodb enough or need more advanced engines tukodb?

for messaging friend mentioned use non relational database instead of mysql. if use separate datbase types adds int headache of keeping them in sync , given 24-7 user content site, cant have downtime.

-- website high traffic user content website, lots of reads/writes no money need depend less on servers/hardware , more on database/software keep me afloat, hence open free/open source databases , database engines.

before answering question directly should concerns premature. lot of assumptions wrong before have working project. instead of designing perfect architecture, make project (non-perfect) , be ready changes.

now, question.

for messaging friend mentioned use non relational database instead of mysql. if use separate datbase types adds int headache of keeping them in sync , given 24-7 user content site, cant have downtime.

that recommendation. don't need keep them in sync because persist different data in different databases.

  • sql database - transactional data.
  • document database - historical , non structured.

website high traffic user content website, lots of reads/writes no money need depend less on servers/hardware , more on database/software keep me afloat, hence open free/open source databases , database engines.

if @ cap theorem , requirements, can tell sql database not suitable because sacrifice partition tolerance or availability sake of consistency (which don't seem need).

from have described, you'll better off database supporting eventual consistency. mongodb 1 of popular document databases.

i heard things cassandra. allows tune between consistency, availability , partition tolerance.

redis can used extremely high loads providing consistency , availability.

so recommend to:

  • use sql database (innodb enough) critical data requires high consistency.
  • use document database higher traffic data (mongodb, coachdb).
  • use key/value (hash) database extremely hight traffic data (~redis).
  • use database comfortable rest.

Comments

Popular posts from this blog

android - Spacing between the stars of a rating bar? -

html - Instapaper-like algorithm -

c# - How to execute a particular part of code asynchronously in a class -