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 a plurality iterations including a first iteration and a second iteration subsequent to the first iteration, wherein the first iteration comprises: 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 in the second iteration, each record for which a parent identifier data field stores a representation of the deleted data object, wherein the second iteration comprises deleting each record marked for deletion by the first iteration, and wherein the one or more computers perform the iterations until an exit condition is satisfied.