Hi,
Further, on this... which leads to how changing of the namespace can be done
using mapreduce.

If I recreate entities, then if the keys are stored as references in other
entities also needs to be recreated.
Ex.
class Party {
  @Long id
  Key<Tenant> tenantKey;  // partitioning/filtering
  String fname
}

I have several other entitities dependent on the Party Key.
class Invoice {
 @Long id
 Key<party> partyKey
 ...
}
class Payment {
 @Long id
 Key<Party> partyKey
}

All invoices/Payments has to be re-created.

So, how can this be done using mapreduce jobs.  One option is
- Using mapreduce, all the Party entities are recreated.  The originalkey
and the newkey is stored in a different mapping table, something like this
and operates in the empty namespace.
class MigrationMappingKeys {
@Long id;
Key<Party> oldKey
Key<Party> newKey
}

Then, I run the mapreduce job on the Invoice and Payment, and recreate based
on the above class.

Any other options...?
-Aswath



On Thu, Oct 28, 2010 at 3:25 PM, Didier Durand <durand.did...@gmail.com>wrote:

> Hi,
>
>
> http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/NamespaceManager.html
> says
>
> "When a namespace aware class (e.g., Key, Query and MemcacheService)
> is constructed, it determines which namespace will be used by calling
> get() if it is otherwise unspecified. If get() returns null, the
> current namespace is unset and these APIs will use the empty ("")
> namespace in its place. "
>
> So, I would guess that you have to recreate / copy your entities after
> having set namespace via NameSpaceManager.set() if you want to move
> them into a new namespace
>
> regards
> didier
>
> On Oct 28, 11:34 am, aswath satrasala <aswath.satras...@gmail.com>
> wrote:
> > Hello,
> > I have an multi-tenant app-id, and I have designed on partitioning the
> > entities based on  url parameters.  I am not using the namespace yet.
> >
> > For example,
> >
> > Tenant {
> > @Id name+email;
> >
> > }
> >
> > class Party {
> >   @Long id
> >   Key<Tenant> tenantKey;  // partitioning/filtering
> >   String fname
> >
> > }
> >
> > Now, I am planning to use the NamespaceManager for the Party entities.  I
> > want to use the mapreduce and apply the namespace on the existing Party
> > entities.
> > Can a namespace be changed from empty to certain value on the existing
> > entity.
> >
> > -Aswathhttp://vs-accounting.appspot.com
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine for Java" group.
> To post to this group, send email to
> google-appengine-j...@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine-java+unsubscr...@googlegroups.com<google-appengine-java%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine-java?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to