couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Melo <andrew.m...@gmail.com>
Subject Re: About denormalization and keep consistent
Date Thu, 08 Apr 2010 18:00:45 GMT
On Thu, Apr 8, 2010 at 12:53 PM, faust 1111 <faust451@gmail.com> wrote:
> What difference?
> if do
> Author
>  after_save
>     if name_changed?
>        Content.by_author(self).each {|content|
>           content.author_name = self.name;
>           content.save(bulk=true)
>       }
>
> or i start backend process to track Author _changes.
>
> This code not guarantee that all contents will updated.

I don't get your question. You asked how to make sure that you could
change a number of documents consistently, we suggested that you watch
_changes to catch any silly race conditions. Then, you told us you
didn't need to use _changes, but you were worried that things would be
inconsistent.

Even with your code above, you get a race condition (if I understand
your ruby right, I don't know ruby much at all). Something could
happen between when you check to see if a document needs to be changed
and the actual change occurs. Then, you're gonna get a conflict and
have to write up the logic to handle that intelligently.

best,
Andrew


>
> 2010/4/8 Andrew Melo <andrew.melo@gmail.com>:
>> On Thu, Apr 8, 2010 at 12:29 PM, faust 1111 <faust451@gmail.com> wrote:
>>> I can catch changes in my app before save author, may be backend
>>> process is surplus in my case.
>>> i need consistent, when i update author name i must know that all
>>> contents with author was updated success.
>>
>> Then their suggestion of watching _changes works for you. Start
>> watching _changes. Make all your changes to the documents' authors.
>> Any changes that come through on _changes, make sure they have the
>> proper author. Keep watching _changes until you're sure that nobody
>> has stale data they're waiting submit.
>>
>>
>>>
>>>
>>> 2010/4/8 Zachary Zolton <zachary.zolton@gmail.com>:
>>>> I suggest you check out the _changes API:
>>>> http://books.couchdb.org/relax/reference/change-notifications
>>>>
>>>> Basically, if you have doc types A & B, where B maintains a denormed
>>>> bit of A, then you can watch the _changes feed in a backend process.
>>>> When an A gets updated, hit a view of all B's related to that
>>>> particular A, and update the dernomed data.
>>>>
>>>> On Thu, Apr 8, 2010 at 10:20 AM, faust 1111 <faust451@gmail.com> wrote:
>>>>> Hi guy's
>>>>> I return back to my problem with denormalization.
>>>>>
>>>>> is it possible to keep consistent when apply denormalization?
>>>>> For example
>>>>> Content
>>>>>   have author (we store author name and id in Content)
>>>>>
>>>>> When author name changed(that's happens not frequently)
>>>>> i need find all content belong to this author and update author name
>>>>> but what if this operation not finished (not all docs was updated)
>>>>>
>>>>> What i can do in this case?
>>>>> Thanks.
>>>>>
>>>>
>>>
>>
>>
>>
>> --
>> --
>> Andrew Melo
>>
>



-- 
--
Andrew Melo

Mime
View raw message