在我的App Engine数据存储区中,我有一个实体类型可能包含大量实体,每个实体都有属性“customer_id”。例如,假设给定的customer_id有10,000个实体,并且有50,000个customer_id。
我正在尝试有效地过滤这一点,以便用户可以一次获得至少2000个customer_id的信息。也就是说,在30秒超时限制内将它们读出到UI(进一步过滤将在前端完成,因此用户不会立即轰击所有结果)。
下面我列出了我当前数据存储模型的视图。 'Reports'指的是customers_ids集,所以继续上面的例子,我可以从ReportCids获得我的2000 customer_ids。
class Users(db.Model):
user = db.StringProperty()
report_keys_list = db.ListProperty(db.Key)
class Reports(db.Model):
#report_key
report_name = db.StringProperty()
class ReportCids(db.Model):
report_key_reference = db.ReferenceProperty(Reports, collection_name="report_cid_set")
customer_id = db.IntegerProperty()
start_timestamp = db.IntegerProperty()
end_timestamp = db.IntegerProperty()
class CustomerEvent(db.Model):
customer_id = db.IntegerProperty()
timestamp = db.IntegerProperty()
event_type = db.IntegerProperty()
我考虑的选项:
- 对我的2000集中的每个customer_in执行单独的查询
- 使用指示客户事件的键列表,但这仅限于列表中的5000个条目(所以我已阅读)
- 获取所有条目,并在我的代码中过滤
如果有人就如何以最有效的方式做到这一点,或者我是以完全错误的方式解决问题,我真的很感激。在有效使用数据存储方面我是新手。
如果有帮助,当然乐意提供任何澄清或信息 非常感谢!
答案 0 :(得分:0)