3

繰り返し/リストプロパティのインデックス作成はどのように機能しますか?リストに追加するとインデックスが追加されるだけで、変更されたインデックスとしてカウントされないことをどこかで読みました。これはまだ正しいですか?

リストから削除する場合も同じですか? リスト内の値を削除すると、その単一のインデックスが削除され、2 回の書き込みとしてカウントされますか?

私が理解していることが正しいなら、これは

class MyModel(ndb.Model):
    my_list = ndb.IntegerProperty(repeated=True)

e = ndb.Key(MyModel, 100).get()
e.my_list.append(50)
e.put()
e.my_list.append(25)
e.put()
e.my_list.remove(50)
e.put()

更新は、1 回の書き込み + 2 回のインデックス書き込み、次に別の更新、1 回の書き込み + 2 回のインデックス書き込み、そして削除のための 1 回の書き込み + 2 回のインデックス書き込みです。

あれは正しいですか?

これに関する私の最後の質問は、エンティティごとの 5000 インデックスの制限がまだ存在するということですか? 10k localhost を実行してみましたが、動作しているようです。

追加:

e.my_list.insert(10)
e.put()

これは別のインデックスを追加するだけですか? または、インデックスはリストのインデックスを保持し、これによりリスト全体が調整されますか?

4

1 に答える 1

2

これで分かった

appstats_CALC_RPC_COSTS = True

appstat で請求計算を有効にしましたが、これについては知りませんでした。答えは追加と同じです。1 回の書き込み + 2 回のインデックス書き込みのみを行い、リストがどこにあるかに追加または削除します。

また、リストに重複する値があり、1 つを削除すると、1 つの書き込みのみが発生します。つまり、重複する単一のインデックスのみが保存されます。また、リスト内の順序は気にしません。並べ替えを行うとエンティティが配置されます。

于 2012-09-02T00:00:39.393 に答える