There is a DB {MySql} with 5 tables A
, BIG
, C
, D
, E
. Their grow factor is about 1
/100
/1
/1
/1
.
The table BIG
has Insert/Read/Update request ratio about 1
/10
/2
. The Inserts and Updates 'cannot fail'.
The table 'BIG' has data that:
- they are critical in the same day in which they are created (in the
ACID
point of view, theAC
is very important), after 2 day its criticality gets smaller and smaller. - they provide the basis for statistical information located in some othe tables (
F
,G
,...). There are some "data-pumps" that reads the data fromBIG
and write it onF
,G
. The data pumps reads about 100 rows fromBIG
and write about 1 row onF
, 1 onG
etc. After that operation the rows onBIG
can be removed.
More Numbers: For the table BIG i expect that: About +2k rows per day in the peakday, about +0.5k rows per day as average. The growing is cyclical: (i.e. mon=+0.5,...,wed=+0.5,sat=+1k,sun=+2k, mon=+0.5,...) and for this reason i would activate the clean of the data once per week (i.e. on mondays)
Description of Data: they are basically user requests that needs to be served 'live' (max 1 hour). Basically there is no need to store those served requests after they are marked as consumed; I just need to do some stats on that (maybe after some day, but no hurry on that).
Deploy information: The deploy is on Heroku and i would use MySql (said to be good at reads) or Postgres (said to be good at updates?) any advice on that too?
What would be a good option in order to effectively manage the scalability of the DB? Is the data pump a good solution?
I was thinking an in memory table BIG
but it is said to provide a good Read ratio (like it would be a cache), what about the Inserts and Updates?
Are there any other options ?