[Tutor] web application and database caching technique
anil maran
anilmrn at yahoo.com
Thu Aug 17 11:55:04 CEST 2006
i m trying to build a webapplication, i need to cache db records as it has become very slow the sql queries and retrival
can you guys helpe me out in designing cache structures/ hash tables for these cases
1. Scenario One:
* Huge number of reads
* Few writes
* One row accessed from db per request
* All data written to db is used.
* Medium number of records.
Since the large number of read need to be fast I chose this design:
A hashtable caches records. They are cleared based on expiration time
and limit on maximum number of cached records. When a record is updated
in the db, it is deleted from the cache and recached next time it is
queried. This part could be handled by implementation you linked to.
A persistent background thread periodically flushes the changed/new
values in the cache to the database. Additional calculations could be
added here to chose the optimal cache entrees to delete or precache.
2. Scenario Two:
* Few reads
* Huge number of writes
* Many rows accessed from db per request
* Most data written to db is discarded.
* Huge number of small records.
This is the strangest so far. Because of the huge number of records,
most of which will just be discarded anyway, I try to keep away from
the database as much as possible. When it's time to flush them to the
db I aggregate the records into groups, cpickle, and lzo them. I am
still playing with this but I notice a good performance improvement
already.
3. Scenario Three:
* Huge number of writes
* Huge number of reads
* One row accessed from db per request
* Small number of records.
This is the same as the first except I have space to cache everything.
This means I can get rid of the time() check for each cache check.
---------------------------------
Stay in the know. Pulse on the new Yahoo.com. Check it out.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20060817/5e7d90f8/attachment.htm
More information about the Tutor
mailing list