Tony Finch - Never delete anything

dotat[info]fanf wrote
on 13th May 2009 at 22:57
Previous Entry Add to Memories Tell a Friend Next Entry

Never delete anything

How long will it be before it becomes normal to archive everything? It's already normal in some situations, and I think that's increasing. It's been the norm in software development for a long time. There's an increase in append-mostly storage systems (i.e. append-only with garbage collection) which become never-delete systems if you replace the GC with an archiver. Maybe the last hold-outs for proper deletion will be high data volume servers...

Anyway, I feel like listing some interesting append-only and append-mostly systems. A tangent that I'm not going to follow is the rise of functional programming and immutability outside the field of storage. Many of these systems rely on cryptographic hashes to identify stuff they have already stored and avoid storing it again, making append-only much more practical.


(Leave a comment)
From:[info]ewx
Date:2009-05-14 08:18 (UTC)
(Link)
Some version control systems do have a means of removing historical data (e.g. p4 obliterate), for the practical reason that some information is illegal or tortious to possess.
(Reply) (Thread)
From:[info]simont
Date:2009-05-14 09:21 (UTC)
(Link)
Or just tactically unwise. If you were to (say) accidentally check your password file in to your publicly visible svn repository, you'd definitely want a way to get rid of it permanently.

(In svn this can be done by making a text-file dump of the repository, hand-editing it, and then reloading it to a fresh actual repository, which is doable but an utter pain.)
(Reply) (Parent) (Thread)
From:[info]ewx
Date:2009-05-14 09:24 (UTC)
(Link)
In that case I'd regard all the passwords as compromised and change them, rather than attempt to lock the stable door post-bolt.
(Reply) (Parent) (Thread)
From:[info]fanf
Date:2009-05-14 11:06 (UTC)
(Link)
Yes. Git makes it quite easy to throw away young revisions, though selectively getting rid of older stuff is harder.

I didn't talk about the underlying implementations much, I think because it's basically orthogonal whether they use a functional data structure or not, and expose functional semantics or not. Mercurial's implementation and semantics are functional. Git has functional semantics, but not a strictly functional implementation. AIUI Bitkeeper is based on SCCS files which are append-only, whereas Perforce uses RCS files which must be rewritten on each update.
(Reply) (Parent) (Thread)
From:[info]bjh21
Date:2009-05-14 11:03 (UTC)
(Link)
As far as I know, the 4.4BSD LFS garbage collector (known as the "cleaner") has always been a user process and has always been optional. I certainly ran an LFS without one for a long while when I had lots of spare space and didn't want lfs_cleanerd holding up user I/O.

While LFS doesn't expose snapshots through the filesystem, dump_lfs constructs one internally.

Unfortunately, BSD LFS is proving unmaintainable for NetBSD, so we'll probably lose it soon.
(Reply) (Thread)
From:[info]fanf
Date:2009-05-14 11:10 (UTC)
(Link)
Oh right, I should have re-read the paper :-)

FreeBSD dropped LFS back in the dawn of time when its VM system got rewritten in ways that broke some of the more arcane semantics. The filesystem layering stuff (nullfs, unionfs) was another victim, and NFS suffered too :-/
(Reply) (Parent) (Thread)

(Leave a comment)

Powered by LiveJournal.com