On 2018-10-06, Adam Jensen <
han...@riseup.net> wrote:
> On Sat, 06 Oct 2018 12:16:08 +0200, Eric wrote:
>
8>< --------
>>
>> It's not a metaphor, that's what Fossil is about. It would be possible
>> to create a Fossil clone (including that protocol) using some storage
>> mechanism other than SQLite, even something that is not a database. No
>> point in actually doing that of course.
>
> The computer filesystem seems to have a metaphor-like correspondence with
> a typical office filing cabinet - a box possibly with drawers which
> contains paper folders which contain paper files.
and also folders which can contain files and folders which can contain ...
> Conceptually, this filesystem metaphor is somewhat different from the
> database relational model - a different approach to data organization
> in storage system.
For the third time, it's not a metaphor, but the real-world organisation
of the real-world data that Fossil deals with. The Fossil database
design doesn't actually care much about the filesystem - the place in the
filesystem where a file belongs is stored only as the name of the file
(full path name). The filesystem is a hierarchy, and a hierarchy can
be stored in a relational database, but that's not what Fossil does.
> I was a little surprised to see that fossil, being a database centric
> system that comes from the SQLite guy, didn't decompose and translate
> the filesystem metaphor into a relational model at a more fine-grained
> level and that the underlying operations, like sync, aren't more closely
> associated with database notions of structure rather than filesystem
> notions of structure.
Firstly, my impression (possibly wrong) is that DRH wanted something
like Fossil, so he planned it and wrote it, using the tool he knew best
as storage mechanism.
Secondly, from the beginning of the sync protocol documentation:
The global state of a fossil repository consists of an unordered
collection of artifacts. Each artifact is identified by a
cryptographic hash of its content, expressed as a lower-case
hexadecimal string. Synchronization is the process of sharing
artifacts between servers so that all servers have copies of all
artifacts.
This is NOT database replication, it is a limited, application-specific
data exchange.
And this is all way off-topic for this group :-)