Module Irmin_chunk

This package provides an Irmin backend to cut raw contents into blocks of the same size, while preserving the keys used in the store. It can be used to optimize space usage when dealing with large files or as an intermediate layer for a raw block device backend.

Managing Chunks

val chunk_size : int Irmin.Private.Conf.key

chunk_size is the configuration key to configure chunk size. By default, it is set to 4666, so that payload and metadata can be stored in a 4K block.

val config : ?⁠config:Irmin.config -> ?⁠size:int -> ?⁠min_size:int -> ?⁠chunking:[ `Max | `Best_fit ] -> unit -> Irmin.config

config ?config ?size ?min_size () is the configuration value extending the optional config with bindings associating chunk_size to size.

If chunking is Best_fit (the default), the size of new chunks will be of maximum max_size but could be smaller if they don't need to be chunked. If chunking is Max, all the new chunks will be of size max_size.

Fail with Invalid_argument if size is smaller than min_size. min_size is, by default, set to 4000 (to avoid hash collisions on smaller sizes) but can be tweaked for testing purposes. Notes: the smaller size is, the bigger the risk of hash collisions, so use reasonable values.

Content_addressable(X) is a content-addressable store which store values cut into chunks into the underlying store X.