4 ms·
Genuinely, I'm curious to hear from OP if you explored using filesystems that can provide de-duplication, snapshots, versioning, and compression and compared th
by theturtle32 2y ago
Genuinely, I'm curious to hear from OP if you explored using filesystems that can provide de-duplication, snapshots, versioning, and compression and compared that to the SQLite approach. It would be interesting to get your take on the comparative benefits of SQLite compared with an approach that uses a more advanced filesystem like ZFS or btrfs. Once you have a filesystem that can de-dup, atomic changes are more or less a matter of building up a directory with the new version first and then swapping one directory for another with a rename. Though I assume there may be a small race condition in between the two directory rename calls. I don't know if there's a standard call to tell the filesystem "mv current old && mv new current" in one shot.
- ajayvk 2y agoClace is meant to be portable and easy to operationalize. It runs on Linux/macOS/Windows. The only external dependency is Docker/Podman for starting containers. Depending on particular filesystem features would make it much more difficult to setup, I did not explore that. There would be use cases where using filesystem features would be more appropriate.
- withinboredom 2y agoIf you are using Docker, then you know the target system is Linux (unless you are building windows containers). There is no reason not to rely on filesystem features.
- ajayvk 2y agoClace runs natively on Windows and macOS, it does not have to run in a container. It can then start containers, either Linux or Windows (the specs https://clace.io/docs/container/overview/#app-specs https://clace.io/docs/container/overview/#app-specs are Linux by default)
- theturtle32 2y agoMakes sense! Portability as a core feature is a good reason not to use platform-specific tech.
- bhaney 2y ago> I don't know if there's a standard call to tell the filesystem "mv current old && mv new current" in one shot. Used to be hackily done by overwriting symlinks, but now there's https://manpages.debian.org/testing/manpages-dev/renameat2.2.en.html#RENAME_EXCHANGE https://manpages.debian.org/testing/manpages-dev/renameat2.2...