[Box Backup] data store question

Chris Wilson boxbackup@fluffy.co.uk
Tue, 25 Mar 2008 21:08:48 +0000 (GMT)


Hi Jody,

On Tue, 25 Mar 2008, Jody Belka wrote:

> I just wanted to check something about my understanding of the 
> datastore. I believe it's the case that files can be stored as a delta 
> against another object in the store, right. So you could have
> 
> object 1
>    |
>    |
>    v
> object 2 - delta against object 1
>    |
>    |
>    v
> object 3 - delta against object 2
> 
> 
> First I want to check I've got that correct?

I believe so, yes.

> Then, assuming that it is, let's say that the store want's to free up 
> some space. Does it have to keep objects 1 and 2 around, or is it able 
> in some way to merge things back together?

It merges "object 1" and "object 2" to create a new "object 2", which no 
longer depends on "object 1", and then deletes "object 1".

> Also, again assuming the above to hold true, can more than one object 
> exist as a delta against the same single object? eg, is this possible?
> 
>               object 1
>                /   \
>               /     \
>              /       \
>             /         \
>       object 2       object 3
>     (delta v 1)     (delta v 1)

I don't believe so at the moment. The automatic merging code would be made 
a lot more complex by this kind of structure. And the diffing code would 
be made a lot more complex by creating it in the first place. Box Backup 
only diffs against previous versions of the same file, so it could never 
end up with a tree structure like this.

However, you might find that object 3 is a newer version of objects 1 and 
2, but only in practice depends on blocks in object 1. You could view that 
as a tree structure if you choose, or equivalently that object 3 depends 
on the completely reconstructed object 2 (not just the difference blocks), 
which itself contains blocks from object 1, which is a linear structure.

Cheers, Chris.
-- 
_____ __     _
\  __/ / ,__(_)_  | Chris Wilson <0000 at qwirx.com> - Cambs UK |
/ (_/ ,\/ _/ /_ \ | Security/C/C++/Java/Ruby/Perl/SQL Developer |
\ _/_/_/_//_/___/ | We are GNU : free your mind & your software |