Is there a canonical way to guarantee deleted data stays deleted in the Community Edition? Especially for data with non-expiring ttls.
-
Community workarounds for durable deletes can be found here: https://discuss.aerospike.com/t/expired-deleted-data-reappears-after-server-is-restarted/470/2. – kporter Mar 02 '17 at 18:26
1 Answers
The one correct way is to set short TTLs (relative to cold-start time) on your objects and to regularly touch them into the future. This comes with a cost of extra write IOPS every time you touch, if the data of that namespace is stored on SSD. The TTL should be what you consider the length of time for that node to cold-start, which in turn depends on the amount of data, and read IOPS capacity of the SSDs. Let's say it takes 1 hour for a node to restart. If you set the TTL on the objects to 1 hour, a deleted object will either not get inserted into the primary index (its void-time is already in the past) or it will expire before the node is back up. This way deleted records cannot be resurrected.
Otherwise, durable deletes are an enterprise feature you may need. Just consider the likelihood of this being an issue in your use case - different applications have very different access and storage patterns.

- 6,951
- 22
- 41
-
2Thanks. I'll mark this as the answer since it seems to be the only way to delete entries in Aerospike community. Although I'm not sure if durable deletes can be considered an esoteric feature in a database(that _only_ enterprise users need). – Icestorm Mar 02 '17 at 21:54
-
Hmmmm.. how about you set default TTL to the amount of time you are willing to wait before you coldstart a node? Generously oversize your cluster to take into account your node failure pattern and if you can, for example, have a node down for a day, and you default ttl is one day, you wait a day and then coldstart the down node... it could work. You will rewrite your entire data set to a new location in the SSD upon touch() every time you extend the ttl using touch() -bad ssd wear out. what if touch() does not run on time?:-(, you lost all data. Too messy. If you have to delete data, get EE. – pgupta Mar 13 '17 at 08:50
-
2BTW, Aerospike has been used in production since 2010/2011, durable delete was only introduced in 2016. Obviously most users don't need to delete and let their records expire naturally using correctly chosen default TTL. – pgupta Mar 13 '17 at 08:53