Treating deletion as a higher order operation than modification gives us a mechanism for both check-pointing of blocks and of garbage collection of deleted lines. Both of these can be done by deleting a block, and then re-asserting the same data as a new block and lines. Although this might seem wasteful, it means that for the additional cost of keeping deletion information for a single block, we no longer need to store the deleted lines that used to be in the block. In addition, it means that if there is a network partition that is subsequently resolved, any changes made in the other partition will not be asserted. Of course this has to be implemented carefully, as the users in the other partition may not wish to see their changes simply discarded, but there are times when it is desirable to assert the current state. If both partitions checkpoint the same block, then the block will be duplicated at the time of partition resolution, which may or may not be what is desired.
Next: Effectively Simultaneous Insertion of Up: Limitations of the Data Previous: Moving of sections of Jon CROWCROFT