私は appengine の Web サイトの開発を開始しましたが、データストアや ndb を使用する場合、データベースに対してランダムなクエリを多数作成する必要があることに気付きました。私の「ランダム」クエリのサンプルコードを次に示します。
q = UserList.query(ancestor = listakey)
if los.rand_num < self.rand_num:
q2 = q.filter(UserList.rand_num > self.rand_num)
elif los.rand_num > self.rand_num:
q2 = q.filter(UserList.rand_num > los.rand_num)
users = q2.fetch(1)
while len(users) == 0:
users = q.fetch(1)
self.rand_num = random.random()
self.put()
ここで、.rand_num は勝者エンティティと敗者エンティティに割り当てられたランダムな float であり、これが次のクエリで再び表示されないようにします。この乱数はいくつかのクエリごとに更新されます。結果は非常にランダムですが、平均レイテンシが約 500 ミリ秒であるため、これは非常に多くのリソースを浪費しているように見えます。一方、SQLデータベースではこれがはるかに効率的であると確信しています
私の質問は、私のコードを改善する方法、または Cloud SQL を取得する必要があることについて、何か提案はありますか?