== Deserialization ==

HAppS periodically checkpoints application state to disk. Developers may want to add or remove fields from their state types for from data types used by their state types. The current solution is to have the developer assign a version number to state. If state changes then the developer provides dispatch to a deserialization function based on that version number.
Well, it is indeed a fact of life that apps get updated, and data- models change. I think Ruby on Rails has implemented this quite good, using migrations. Basically, when you're using a migration, you specify the differences between two datatypes (or in their case, tables). If we found some way to determine those diffs automatically, and then require a function that maps the old types to the new types... but maybe I'm thinking too difficult. Just thinking out loud, really. We could encode the structure of the used datatypes into the state, and let HAppS automatically check if it needs to migrate...

One of the concepts that I also like about RoR is that they have 3 modes, development, production and test. Three different databases are used for the three modes, so you're not messing in your production database. Maybe this is something to think about, too.

-chris

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to