多くのブール値のプロパティを持つオブジェクトを持つGAEアプリケーションを構築しています。 (psuedo-sqlで)「X1 = True、X2 = False、X3 = False、X4からX7を真または偽にする」などのクエリを作成するプロパティを検索できます。多くのBooleanPropertyを使って効率的なGoogle-App-Engineスキーマを作成する方法
class JobModel(BaseModel):
job_name = db.StringProperty();
part_time = db.BooleanProperty();
has_401k = db.BooleanProperty();
has_health_in = db.BooleanProperty();
has_childcare = db.BooleanProperty();
has_edu_reim = db.BooleanProperty();
問題はGAEはこれらのブール値を検索するあらゆる可能な方法のためのインデックスを必要とすることである。
は、私は、以下に示すものと同様のモデルを持っています。したがって、5つのブール値のプロパティがある場合は、32の異なるインデックスが必要になります。あなたが20のブール値のプロパティを持っているなら(私の実際のケースでは)、100万を超えるインデックスが必要です!
このデータストアスキーマを設定するには、より良い方法が必要です。
。しかし、あなたのソリューションはまだO(N)のインデックスを必要とします。 O(N)インデックスを回避する方法はありませんか? – speedplane
アイデアは、すべてのプロパティを1つのインデックスになるように1つのリストプロパティにエンコードすることです。あなたは "爆発的なインデックス"の問題を望んでいない。 http://code.google.com/appengine/docs/python/datastore/queries.html#Big_Entities_and_Exploding_Indexes – kevpie
この「分解インデックス」の問題を理解していると思います。しかし、すべてを1つのプロパティに入れることで、コードとデータモデルがクルージングに変わります。 – speedplane