The Puffy Data Transactor is loosely modeled after the one used in Datomic. That is, it's a single sequential process which serializes all write access.

Read Mode

Any process can can access Puffy Data in read mode. For example:

inf_data = PuffyData.inflate(def_tuple)

The inflate/1 function uses the Deflated Tuple to identify the base Blob and desired view. It uses one or more Cached Blobs to reconstruct the Inflated Data.

Write Mode

Only the Transactor process can access Puffy Data in write mode. And, because there is only one such process, race conditions are avoided. The Transactor stores the Inflated Data as a new Cached Blob, then updates the index data in ETS (in case of a crash):

To be continued...

This wiki page is maintained by Rich Morin, an independent consultant specializing in software design, development, and documentation. Please feel free to email comments, inquiries, suggestions, etc!

Topic revision: r4 - 14 Aug 2015, RichMorin
This site is powered by Foswiki Copyright © by the contributing authors. All material on this wiki is the property of the contributing authors.
Foswiki version v2.1.6, Release Foswiki-2.1.6, Plugin API version 2.4
Ideas, requests, problems regarding CFCL Wiki? Send us email