Object identity

Chris Muller asqueaker at gmail.com
Thu Jun 14 04:27:39 UTC 2007


Yes, I think you are asking about ReadStrategy's.  They are crucial to
getting proper performance out of Magma.  Here is the information
about ReadStrategy's you must understand:

  http://wiki.squeak.org/squeak/2638


On 6/12/07, Florian Minjat <florian.minjat at emn.fr> wrote:
> I have another question : if I ask magma for an object Player which
> references others Players in its Letters, will magma deserialize all
> the referenced players ?
> If it is the case, is there a way to ask for an 'half-deserialization'
> ? By that I mean for example getting the referenced Players with all
> their primitive objects but no referenced object ? Otherwise I will
> need to seriously rethink the Mailbox/Letter model of my application.
>
> Florian
>
>
> Chris Muller wrote:
> > Hi Florian, this is an interesting problem.
> >
> > First to answer your question, Magma identifies an object as already
> > in the repository if it has a "permanent" oid.  This is an oid range
> > between MaOidCalculator #firstUserObjectOid and #lastUserObjectOid.
> > The #hash of an object never comes into play to determine this, or
> > anything in Magma for that matter.
> >
> > One way to get your large object-model into Magma would be to change
> > the method MaObjectBuffer>>#ensureSpaceFor: to allow more than 10
> > megabyte serializations.  I only suggest this only because it is an
> > arbitrary limit and it looks like your model is right there just over
> > the limit.  Change it to 50-meg on the fastest computer you have, It
> > should work.  Submit the commit and let it run all night.
> >
> > Another option would be to temporarily change your Players to
> > reference the other players only logically; by some temporary id or
> > something.  Once you get them loaded into Magma, then reset the
> > references back to the actual objects.
> >
> > Note #maTransientVariables is available to implement on Player so it
> > will not serialize those variables, so you could actually ADD a new
> > logical reference, if necessary, and make the hard player reference
> > transient (temporarily).
> >
> > Please let me know if these ideas are feasible.
> >
> > - Chris
> >
> >
> > On 6/10/07, Florian Minjat <florian.minjat at emn.fr> wrote:
> >> Hi,
> >>    I am trying to transfer a big object hierarchy to Magma : 110100
> >> objects in 9004144 bytes.
> >>    The basic structure is composed of ~70 Players with a lot of stuff
> >> inside. Each players can have some Letters which references other
> >> Players as sender or recipients.
> >>    The problem is that I can't submit one player to an empty Magma
> >> repository without letting Magma insert all the references Players.
> >> And the resulting transaction is too big, causing an error. So I
> >> separated all the Letters from the Players, inserted the players
> >> (~50min) and then tried to insert the Letters. But I close the
> >> connection to the magma repository between the two, so Magma tried
> >> again to load all the references Players.
> >>    So here is my question : how does Magma identify a given object as
> >> already inside a repository ? Does it compare the hash of the objects
> >> and I just need to redefine the hash method of Players ?
> >>    Each try is quite long so I would like to understand a little more
> >> of the inner mechanisms of Magma instead of trying numerous times.
> >>
> >> Florian
> >> _______________________________________________
> >> Magma mailing list
> >> Magma at lists.squeakfoundation.org
> >> http://lists.squeakfoundation.org/mailman/listinfo/magma
> >>
> >
> _______________________________________________
> Magma mailing list
> Magma at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/magma
>


More information about the Magma mailing list