thanks Robert for the explications.

I agree with you that's the best way to remove a book is to delete the
reference in  ComicsCollection.

But how to do that ? Must I simply remove the reference in the ordered
collection ? Voyage will syncronize automatically the data in memory with
the content of the database ? Must I force the save of the data after
removing the reference ?

Olivier ;-)


2014-04-17 14:10 GMT+02:00 Norbert Hartl <norb...@hartl.name>:

>
> Am 17.04.2014 um 13:53 schrieb olivier <olivier.auver...@gmail.com>:
>
> > Hi,
> >
> > I'm using Voyage in a Pharo application.
> >
> > I have two MongoDB collections which are ComicsCollection and
> ComicsBook. Each book is attached to a instance of ComicsCollection. The
> reference of each book is stored in an ordered collection (in the instance
> of ComicsCollection). The problem is that if I remove a book, the reference
> to the book is not deleted from ComicsCollection.
> >
> > How can I remove properly a book and the reference to the book ?
> >
> From the smalltalk image view the problem is usually exactly the opposite:
> You don’t delete objects but you remove references to them. As voyage maps
> objects it is a good idea to stay in the object realm. So you should rather
> remove the book from the collection. This way you won’t get errors just
> garbage. The „real“ problem that arises then is that the book would still
> be in the database. Just like it is in the image but there is no garbage
> collector for mongo. To decide that from the image is not possible. You
> load only a sub graph from the database into image memory. So you don’t
> know if there are other objects referencing the book.
>
> If your records fit all in memory you could load all collections and books
> and build the difference between all referenced books in the collections
> and the total amount of books. The difference will be the set of objects
> not being referenced by a collection and those can be deleted.
>
> If the records do not fit in memory an alternative strategy would be
> needed. I started to research if it is possible to build a map/reduce based
> garbage collector for common cases but got distracted. But I have the same
> problem so I will need to pick it up some time.
>
> hope that helps,
>
> Norbert
>
>
>

Reply via email to