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

Reply via email to