在我的appengine数据存储中,我有一个实体类型,它可能包含大量实体,每个实体都有属性“customer_id”。例如,假设一个给定的customer_id有10000个实体,有50000个customer_id。在
我试图有效地过滤这些信息,这样用户一次至少可以获得2000个客户的信息。也就是说,在30秒的超时限制内将它们读出给用户界面(在前端将进行进一步的过滤,这样用户就不会一次收到所有结果)。在
下面我列出了我当前数据存储模型的视图Reports引用一组customer_id,所以继续上面的例子,我可以从ReportCids中获得2000个customer_id。在
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系列中,对每个客户执行单独的查询
-使用指示客户事件的密钥列表,但列表中的条目限制为5000个(因此我已阅读)
-获取所有条目,并过滤我的代码
如果有人能就如何以最有效的方式解决这一问题提供一些建议,或者如果我处理问题的方式完全错误,我将非常感激。在有效地使用数据存储方面,我是个新手。在
如果有帮助的话,当然乐意提供任何澄清或信息。
非常感谢!在
谢谢你回复我。看起来我有一个问题,当我发布时使用的帐户,所以我需要在这里的评论回应。在
考虑过这一点,并且根据你所说的,得出这么多结果是行不通的。在
我想做的是: 我正在尝试生成一个报告,为多个客户id显示该组客户发生的事件。所以假设我有一个报告,可以查看2000个客户的信息。我希望能够获取所有事件(CustomerEvent),然后按事件类型筛选。我可能会问很多,但我希望做的是为2000个客户获取所有这些事件,然后在前端进行事件类型筛选,这样用户就可以动态地调整他们想要查找的事件类型,并获得关于该事件类型的成功操作的一些信息。在
所以我的主要问题是有效地从CustomerEvent中获取正确的实体。在
现在,我正在抓取客户ID的列表,如下所示:
我对10000个CustomerEvent实体的估计相当高,但理论上这是可能的。也许当我去获取报告结果时,我可以直接根据用户指定的事件类型进行筛选。这意味着每次他们选择一个不理想的新选项时,我都必须返回到数据存储,但考虑到这个设置,这可能是我唯一的选择。在
非常感谢您抽出时间来看看这个!在
相关问题 更多 >
编程相关推荐