Thanks for the tip.  I'll look into it now (now that I've read the docs on
indexing and understand where I'd need it)


On Wed, Feb 23, 2011 at 6:21 PM, Ikai Lan (Google) <ikai.l+gro...@google.com
> wrote:

> Index writes are technically asynchronous, since the RPC actually returns
> before the index is written. However, the index is written so quickly that
> this has never been an issue. For all intents and purposes, it's
> instantaneous.
>
> This will, however, incur additional CPU costs. Daniel, you should
> investigate setting indexed=False on many of these properties.
>
> --
> Ikai Lan
> Developer Programs Engineer, Google App Engine
> Blogger: http://googleappengine.blogspot.com
> Reddit: http://www.reddit.com/r/appengine
> Twitter: http://twitter.com/app_engine
>
>
>
> On Sun, Feb 20, 2011 at 9:16 AM, stevep <prosse...@gmail.com> wrote:
>
>> I believe that by not explicitly setting indexing to False, you're
>> getting an implicit index on every item (apart from non-idexables like
>> Texts). If these item values change a lot, your put() may be quite
>> expensive and slower than expected. You might also end up wondering
>> why you've got so much storage related to indices. Even without values
>> that change, your index structure is still very likely to greatly
>> affect your put() performance. Are you sure this is what you want/
>> need?
>>
>> My limited experience has me now striving to push index updates into
>> task queues whenever feasible to keep the on-line handler put() as
>> fast as possible. This often results in a separate index-only db class
>> linked to the original record via its id value. Doesn't solve every
>> problem, but will certainly be much faster (again that statement is
>> based on my limited experience). I'm starting to get used to this
>> setup, and find it a fairly decent workaround to avoiding potential
>> DeadlineExceeded issues in the on-line handler.
>>
>> Hope this helps,
>> stevep
>>
>> On Feb 19, 11:32 am, Daniel <danielkra...@gmail.com> wrote:
>> > I have a model that holds a bunch of game data:
>> >
>> > class MyGame(db.Expando):
>> >
>> >     sender=db.StringProperty()
>> >     senderScore=db.IntegerProperty(default=0)
>> >     senderChatWaiting=db.BooleanProperty(default=False)
>> >     senderResigned=db.BooleanProperty(default=False)
>> >     senderHideGame=db.BooleanProperty(default=False)
>> >
>> >     recipient=db.StringProperty()
>> >     recipientAccepted=db.BooleanProperty(default=False)
>> >     recipientScore=db.IntegerProperty(default=0)
>> >     recipientChatWaiting=db.BooleanProperty(default=False)
>> >     recipientResigned=db.BooleanProperty(default=False)
>> >     recipientHideGame=db.BooleanProperty(default=False)
>> >
>> >     bucket=db.TextProperty()
>> >     board=db.TextProperty()
>> >     currentPlayer=db.IntegerProperty(default=0)
>> >     whosTurn=db.StringProperty()
>> >     whosWaiting=db.StringProperty()
>> >     moveID=db.IntegerProperty(default=1)
>> >
>> >     lastPlayed=db.StringProperty()
>> >     lastPointsRecieved=db.IntegerProperty(default=0)
>> >
>> >     chatLog=db.StringListProperty()
>> >
>> >     created=db.DateTimeProperty(auto_now_add=True)
>> >     lastUpdate=db.DateTimeProperty(auto_now_add=True)
>> >     gameFinished=db.BooleanProperty(default=False)
>> >     gameResigned=db.BooleanProperty(default=False)
>> >
>> > I have a single method that updates all of these values for a particular
>> > existing game record and does a single .put() at the end to save it.  Is
>> it
>> > possible that only some of the items are updated and not others.. a
>> partial
>> > put()?  I was assuming that a put() would either succeed or fail, but
>> not
>> > partially succeed.
>> >
>> > I'm trying to track down a bug in my app and curious if it's possible I
>> have
>> > a partial write.. if not the bug is probably elsewhere in my server code
>> or
>> > client.
>> >
>> > Thanks
>> > Daniel
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Google App Engine" group.
>> 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.
>>
>>
>  --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> 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.
>



-- 
--------------------
Daniel Kramer

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
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.

Reply via email to