but I would strongly recommend using a serialization format that allows for struct field versioning instead.
Otherwise the moment you need to change your data structure, all other already stored data becomes
lost. Google needed field versioning so instead of using classic Sun XDR RPC, they created protocol buffers.
This let them do rolling cluster upgrades, as just one example, without taking down an
entire cluster of hundreds of computers at once to upgrade all the software on all machines in unison.
For more, see the discussion in the greenpack README. Greenpack is simply msgpack with a versioning convention.
https://github.com/glycerine/greenpack