AppEngineの書き込みオペレーションに付いて(前回からの宿題)

AppEngineのDataStoreでインデックスを無効にした場合、書き込みコストが下がるか調べてみました。

まず、全てのModelの全てのフィールドにてindexを無効にしました。

下記のコード参照
AppEngine DataStore Model which is disabled index

class Post(db.Model):
    id             = db.StringProperty(required=True, indexed=False)
    from_name      = db.StringProperty(required=True, indexed=False)
    from_id        = db.StringProperty(required=True, indexed=False)
    message        = db.TextProperty(required=False, indexed=False)
    type           = db.StringProperty(required=False, indexed=False)
    created_time   = db.StringProperty(required=False, indexed=False)

上記の設定にてAppEngine上のサービスを起動。

結果:

  1. 各フィールド毎のインデックスは作成されなくなった。よって書き込みオペレーションの回数が減り、コスト削減。
  2. しかし、DataStoreのエントリーの数と同数のインデックスが作成されている。よって、書き込みオペレーションの回数は書き込んだ(Put)エントリーの2倍発生。下記のイメージ参照。

考察:

キー(Key)でしかデータを参照(Lookup)しないので、なんとかインデックスを完全に無効にしたい。推測であるが、もしかしたら、このインデックスはキーでの参照用に作成されているのかも?自分のアプリのコストは、書き込みオペレーションからくるので、どうにかしたい。。。。。。

Leave a comment