*I am responding here to combined comments:* *I followed Brett Slatikn recommendations how to perform most efficient operations on DataStore and it works extremely fast * *in Master / Slave.*
+Robert Kluin > For instance, fetching a large list of keys from multiple entity groups may be slower due to the transaction overhead. *I have list of keys only from one entity.* >So you might need to evaluate your use of entity groups. It may also >be that you've got a design that is making many datastore RPCs in >serial, that will probably be more of an issue when on HR since there >is a slightly higher average latency. *I store keys in lists. When getting the list * * * *for example* *class MyList(BaseModel):* * My_keys = db.ListProperty(db.Key) * * * *Brett Slatkin recommends about no more than 3,000 max and so do I.* * * *and this is parallel:* * e = MyList.get_profile(email) * * my_keys = e.my_keys my_key = db.get(my_keys) #That's it! Super fast! @classmethod def get_profile(self, email): if not email: return None root = MyRoot.get_profile() #cache self._cache = get_cache("memcached://") skey = email key_cache = 'MyList' + skey + str(root.key()) profile = self._cache.get(key_cache) #cache if not profile: key = db.Key.from_path('MyList', skey, parent=root.key()) profile = db.get(key) # not found - create if not profile: #def txn(): root = MyRoot.get_profile_del_cache() profile = MyList(key_name=skey, parent=root.key()) profile.put() return profile #return db.run_in_transaction(txn) #cache self._cache.set(key_cache, profile, timeout=CACHE_TIMEOUT) #cache return profile * +Fred Sauer >verifying whether you are performing batch gets across entity groups *I have transactions in which I have an operations on different entity groups but this is by design. * >I should also point out that I have yet to meet a developer whose not happier on HRD and migrating their app. >You may well be the first (although I'm not trying to imply that you are the only one)... :) *The app is in development for more than a year and I followed best practices valid at this time before high replication* *datastore was introduced. Redesign is not an option because I already have generated a lot of interest and waiting list* *of customers ready to pay for the current functionality. The benefit I would get from going to High Replication does not * *justifies the effort: I have already 20,000 lines of code - redesign is not practical.* * * *Best,* * * *--Constantine* -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To view this discussion on the web visit https://groups.google.com/d/msg/google-appengine/-/S6G9eOWRvVUJ. To post to this group, send email to google-appengine@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.