ThoughtLeadr uses Bip's approach. Its essential lazy schema migration.

On Wed, Sep 19, 2012 at 3:03 PM, Reid Draper <reiddra...@gmail.com> wrote:

> I have also used Bip's method and found it successful. You do need to be
> careful to make sure
> all reads of your data go through this upgrade-path, but that is easy once
> you realize it :).
>
>
> Reid
>
> On Sep 19, 2012, at 5:44 PM, Bip Thelin <b...@kivra.com> wrote:
>
> We use a technique that works well for our use case:
> We store everything as JSON and use the erlang-client, for every object we
> store we add an opaque schema_version tag to the JSON and then in our model
> encode/decode routine we parse this schema_version and if the version is
> not the latest according to the model we recurse and upgrade the payload
> all the way up to the current version and then return the new object to the
> client and spawn an async process that saves the new object back.
>
> So for instance an object is at schema_version 1 when it get's read. The
> model is now on version 5 there will be five functions, i.e:
> upgrade_version(2, Payload) ->
>     do_something();
> upgrade_version(3, Payload) ->
>     etc...
>
> every function knows how to upgrade itself from it's former version so
> fast forwarding through version is easy and every object will get upgraded
> eventually (if the get read).
>
> --
> Bip Thelin
>
> KIVRA | Lugnets Allé 1 | 120 33 Stockholm
> Tel 08-533 335 37 | Mob 0735-18 18 90
> www.kivra.com
>
>
>
>
> On 19 sep 2012, at 00:55, Allen Johnson <akjohnso...@gmail.com> wrote:
>
> Hey everyone,
>
> I'm beginning to experiment with Riak and I'm trying to better
> understand how to model my data.  One question I have at the moment is
> how to evolve my data with a data store such as Riak?  I know that
> it's schema-less and that I can add new fields as needed but I'm
> thinking more about the existing documents.
>
> For example, say hypothetically, that I have a fairly successful
> riak-based app.  As the application code continues to evolve over
> several versions I begin to find a "better" way to model my data.  By
> this time I have already stored many, many documents.  What is the
> appropriate path here?  Do I version my documents with metadata and
> rely on my application code to continue to deal with old-style
> documents -- or do I perform some sort of bulk transformation on these
> existing documents?
>
> Thanks,
> Allen
>
> _______________________________________________
> riak-users mailing list
> riak-users@lists.basho.com
> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>
>
> _______________________________________________
> riak-users mailing list
> riak-users@lists.basho.com
> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>
>
>
> _______________________________________________
> riak-users mailing list
> riak-users@lists.basho.com
> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>
>


-- 
Cheers,

Todd Cullen | Founder & CEO of ThoughtLeadr
177 Post Street, #550 SF 94108
e. t...@thoughtleadr.com p. 415-254-0787
twitter: @shakakai <http://www.twitter.com/shakakai> skype: todd.cullen

  Fast Company covers
ThoughtLeadr<http://www.fastcocreate.com/1680828/imgur-blurs-line-between-memes-and-ads-with-lipton-briskscumbag-steve-hybrid>
_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to