Alternative to Amazon DynamoDB Time to Live (TTL)
Prabusah
Posted on February 23, 2022
Scenario:
- Certain data lose relevance after a specified time.
- So create records in datastore that should exists only for a specified time from the creation time.
- Time can be anything from 1 second to hours.
Example Case: Make the record expire within 10 seconds of its creation time.
Option 1: Application based timer (Not Recommended)
Whenever Application creates a record it has to trigger a timer as shown below JavaScript example timer:
/*
setTimeout's not the right way to keep track of timer... Let's assume it works for explaining this option.
*/
setTimeout(function() {
purgeRecord(recordId);
}, 10000);
Problem: An Application receiving thousands of request per second has to create those number of timers. This option is not scalable.
Option 2: Amazon DynamoDB - (Not Recommended)
DynamoDB per-partition scanner background process automatically and continuously evaluates the expiry status of items in the table.
Problem:
Amazon DynamoDB TTL typically deletes expired items within 48 hours of expiration. Scan & Filter by timestamp not a scalable option.
This option works best if your TTL is minimum 48 hours.
Not matching with our scenario of expiring items in 10 seconds.
Option 3: Amazon Elasticache (Recommended)
Redis compatible Amazon Elasticache honours TTL by seconds.
Code example:
redis_client.set('key', 'value', {
EX: 10
});
Matches with our 10 seconds expiring scenario.
Please let me know your thoughts or other options in comments.
Posted on February 23, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.