Re: [google-appengine] Hashing Keys

2010-12-15 Thread 风笑雪
Calculating MD5 is very fast in GAE:

from time import time
from hashlib import md5

s = '1'*100
t = time()
for i in xrange(100):
md5(s).digest()
print time() - t

result: 1.469063


I remember the key name is limited to 500 bytes long, so it may exceed if
you combine several keys into one.

--
keakon

My blog(Chinese): www.keakon.net
Blog source code: https://bitbucket.org/keakon/doodle/



On Wed, Dec 15, 2010 at 2:43 PM, johnP j...@thinkwave.com wrote:

 I need to create a large amount of records which relate three other
 entities.  Just for example, take 100 people; 100 days; and 100
 restaurants.  To create a record for an intersection of a person/day/
 restaurant, it's possible to create keyname of person.key()+day.key()
 +restaurant.key().  And to retrieve records, it's easy to generate a
 list of keys and use a db.get().

 In the internet somewhere, I read a comment by Nick Johnson saying
 that long keynames are inefficient, and that it can be a good idea to
 use a MD5 or SHA1 hash function to shorten the key name.  My question
 is, how expensive are the MD5 and SHA1 functions?

 For example, if I need to generate 100 keys for each view (e.g. to
 retrieve people who visited 1 restaurant in 1 day, I can generate 100
 keys and db.get() that list) - is it cheaper to use the MD5 hash to
 keep key_names shorter?  Or is the cost of generating the hashes more
 than any savings from shortening the keys?




 --
 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-appeng...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine+unsubscr...@googlegroups.comgoogle-appengine%2bunsubscr...@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-appeng...@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.



[google-appengine] Hashing Keys

2010-12-14 Thread johnP
I need to create a large amount of records which relate three other
entities.  Just for example, take 100 people; 100 days; and 100
restaurants.  To create a record for an intersection of a person/day/
restaurant, it's possible to create keyname of person.key()+day.key()
+restaurant.key().  And to retrieve records, it's easy to generate a
list of keys and use a db.get().

In the internet somewhere, I read a comment by Nick Johnson saying
that long keynames are inefficient, and that it can be a good idea to
use a MD5 or SHA1 hash function to shorten the key name.  My question
is, how expensive are the MD5 and SHA1 functions?

For example, if I need to generate 100 keys for each view (e.g. to
retrieve people who visited 1 restaurant in 1 day, I can generate 100
keys and db.get() that list) - is it cheaper to use the MD5 hash to
keep key_names shorter?  Or is the cost of generating the hashes more
than any savings from shortening the keys?




-- 
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-appeng...@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.