columbia: Enhanced serialization for media that support seeking.

[ bsd3, library, serialization ] [ Propose Tags ]

Libraries such as binary and cereal support sequential reading and writing but do not rely on any further operations. Many media support seeking in files as well. This library implements a file format that supports random access to data entities by seeking.

This library by default enforces a strong concept of immutability; this has a number of benefits including sharing of substructure. Files in its format have a nominal mutable state that changes over discrete time steps, permitting strong reasoning. This work was inspired by Haskell's focus on immutability, and by the programming langauge Clojure's very disciplined management of mutable state.

In addition to a bare bones locking strategy, an optional transactional locking strategy over tree data structures is implemented. This gets this close to an object-oriented DBMS; there is a strong affinity between persisted objects and tree data structures. The transaction strategy prevents multiple processes from reading and writing on data that is mutually descendant in a tree structure. I argue that this is the appropriate generalization of transactions on traditional relational database records.

The database's store has been implemented over memory maps for speed, and is portable between Windows and Linux platforms.

This library also uses the syb-with-class library to streamline implementation of serializers for various data entities, so that you don't have to write much boilerplate ;).

Release notes for version 0.1.1:

  • Changed the invariant surrounding how files are seeked for reading/writing procedures. This permits an additional optimization. See Utils module for details.

  • Generalized the interface to Utils locking strategies to arbitrary monads incorporating exceptions and I/O.

Release notes for version 0.1.2:

  • Minor bug fixes.

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.1, 0.1.2, 0.1.3, 0.2
Change log ChangeLog.md
Dependencies array (>=0.5.1 && <0.5.2), base (>=4.6 && <=5), bytestring (>=0.10 && <0.11), containers (==0.5.8.1), contravariant (==1.4), data-endian (==0.1), directory (>=1.2.2.0 && <=1.3.0.0), filelock (==0.1.0.1), invariant (==0.4.2), mmap (==0.5.9), mmorph (==1.0.9), monad-loops (==0.4.3), mtl (==2.2.1), parallel (==3.2.1.1), pointed (==5), pointless-haskell (==0.0.9), syb-with-class (==0.6.1.7), transformers (>=0.4.2.0 && <=0.5.0.0) [details]
License BSD-3-Clause
Author James Candy
Maintainer jacinablackbox@yahoo.com
Category Serialization
Uploaded by JamesCandy at 2017-10-31T18:39:37Z
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 4795 total (22 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2017-10-31 [all 1 reports]