From dae12d2d88be218401acbe5d311694d524edd671 Mon Sep 17 00:00:00 2001 From: evuez Date: Wed, 3 Apr 2024 22:43:16 +0200 Subject: Add some details to README --- README.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7e85092..04d827b 100644 --- a/README.md +++ b/README.md @@ -2,4 +2,14 @@ A content-addressable storage system, with a fuse-based VFS client. -This is very much a work in progress. The fuse-based VFS client in `src/client/fs.rs` is being rewritten to handle large files. Every file update needed to first load the entire file to memory before flushing it to the CAS. The goal now is to first copy the file out of the CAS, update it, then rewrite it to the CAS. +This is very much a work in progress. +The fuse-based VFS client in `src/client/fs.rs` is being rewritten to handle large files. Every file update needed to first load the entire file to memory before flushing it to the CAS. The goal now is to first copy the file out of the CAS, update it, then rewrite it to the CAS. + +`carton` splits files using a content-defined chunking algorithm (FastCDC). These chunks of data are refered to as _plain objects_. Groups of plain objects can be retrieved or updated as a single file thanks to _patches_ and _anchors_. + +Plain objects, patches and anchors are all content-addressable and immutable. + +On creation, each file gets an anchor, which is just a unique random blob of data. Patches are then created to define the anchor: + +- List which chunks are linked to the anchor, and in what order they were created, +- Assign attributes to the anchor, such as name, size, mime type, ... -- cgit v1.2.3