Python を使用して Google App Engine アプリを作成しました。このアプリケーションは多くのユーザー名を扱います。
50K のユーザー名のデータベースがあります。各ユーザー名には一意のハッシュ値があります。これもデータストアに保存されます。
アプリ ユーザーが任意のユーザー名を送信したとき。アプリケーションは、最初にユーザー名が DB に存在するかどうかを確認します。
新しいユーザー名の場合、アプリケーションは新しい名前の新しいハッシュを計算し、名前とハッシュを DataStore に保存します。
ユーザー名がデータストアに既に存在する場合は、データ ストアから古いハッシュを取得します。
サンプルコード:
class Names(db.Model):
name = db.StringProperty(required=True)
hash = db.StringProperty(required=True)
username = "debasish"
user_db = db.GqlQuery("SELECT * FROM Names WHERE name=:1", username)
user = user_db.get()
if user == None:
#doesn't exist in DB..so calculate new hash for that name and store it in DB
e = Names(name=username,hash="badasdbashdbhasbdasbdbjasbdjbasjdbasbdbasjdbjasbd")
e.put()
else:
#retrieve the old hash.
self.response.out.write('{"name":"'+user.name+'","hash":"'+user.hash+'"}')
私が直面している問題は、GAE の無料のデータ ストア読み取り操作のクォータです。すぐに超えてしまい、アプリケーションが動作しなくなります。
また、memcache にデータベース全体を追加して、このように memcache を実装しようとしました。しかし、それは失敗でもあり、結果はもっと悪いものでした。
def get_fresh_all(self):
all_names = db.GqlQuery("SELECT * FROM Names")
memcache.add('full_db', all_names, 3600)
return all_names
だから、みんな提案してください、私は何か間違ったことをしていますか?? データストアの読み取り操作をより効率的にするにはどうすればよいですか??
前もって感謝します。