0

データストアに多くの既存のエンティティが存在するモデルにComputedPropertyフィールドを追加したいと思います。

この新しいComputedPropertyで既存のエンティティをクエリするには、最初に計算されたプロパティを生成する必要があります。

計算をトリガーし、計算された値をデータストアに戻す最も効率的な方法は何ですか?

4

2 に答える 2

0

あなたが話しているエンティティの数によって異なります。MapReduceまたは単にリモートAPIを使用します(コンソールを起動して手動で実行します)

于 2012-04-22T07:44:12.593 に答える
0

実際に持っているデータの量によって異なります。これがタスクキューソリューションですが、割り当てを使い果たしてしまいます...

class StampValue(webapp.RequestHandler):
    _task_url = '/tasks/stamp'
    _page_size = 100

    @classmethod
    def fire(cls, **params):
        taskqueue.add(url=cls._task_url, params=params)

    def get(self):
        self.fire()

    def post(self):
        key = self.request.get('key')
        if key:
            entities = MyModel.gql('WHERE __key__ >= :1 ORDER BY __key__ ASC', db.Key(key)).fetch(self._page_size+1)
        else:
            entities = MyModel.gql('ORDER BY __key__ ASC').fetch(self._page_size+1)

        key = None
        if len(entities) == self._page_size+1:
            key = str(entities[-1].key())
            self.fire(key=key)
            entities = entities[:self._page_size]

        for entity in entities:
            # update your field here
        db.put(entities)
于 2012-04-22T08:14:31.097 に答える