1. A method comprising: receiving, by one or more computers, a request to delete a data object, the data object being represented in a record in a data table, wherein an object identifier data field of the record stores a representation of the data object, and a parent identifier data field of the record stores a representation of a parent object of the data object; marking the record for deletion from the data table; and sweeping the data table in one or more iterations, including, in each iteration of sweeping: deleting, from the data table, each record marked for deletion; deleting each data object represented in an object identifier field of the deleted record; and then marking for deletion from the data table each record for which a parent identifier data field stores a representation of the deleted data object, wherein the one or more computers perform the one or more iterations until an exit condition is satisfied.