The big webapp I'm working on moved from deleting data to adding delete flags over the 7 years of its existence. There are two reasons for this, none of it involves tracking users.
For one, a lot of the data is synchronized to offline applications.
If you just delete the data on the server, it's gone and it becomes impossible to tell clients that they have to remove their copy. In this case, I could keep a second list of deleted items around and synch only that of course, but that would mean additional work and it wouldn't help for the other case:
Many times, end users wanted us to restore some data for them that they accidentally deleted. Back in the days that meant restoring the backup, and merging the backup with the current live data. A risky, complicated and thus expensive process.
Nowadays, I just set the delete flag to false and the problem is solved.
On the other hand, the data we are dealing with isn't nearly as sensitive as Facebooks and it's never shared between users.
For one, a lot of the data is synchronized to offline applications.
If you just delete the data on the server, it's gone and it becomes impossible to tell clients that they have to remove their copy. In this case, I could keep a second list of deleted items around and synch only that of course, but that would mean additional work and it wouldn't help for the other case:
Many times, end users wanted us to restore some data for them that they accidentally deleted. Back in the days that meant restoring the backup, and merging the backup with the current live data. A risky, complicated and thus expensive process.
Nowadays, I just set the delete flag to false and the problem is solved.
On the other hand, the data we are dealing with isn't nearly as sensitive as Facebooks and it's never shared between users.