【发布时间】:2011-08-18 19:36:44
【问题描述】:
我们需要多年的天气数据来构建报告应用程序。天气数据有许多不同类型的字段,例如城市、州、国家、邮政编码、纬度、经度、温度(hi/lo)、温度(avg)、降水量、风速、日期等。
我们的报告要求我们选择这些字段的组合,然后对它们进行排序、搜索和过滤,例如
WeatherData.all().filter('avg_temp =',20).filter('city','palo alto').filter('hi_temp',30).order('date').fetch(100)
或
WeatherData.all().filter('lo_temp =',20).filter('city','palo alto').filter('hi_temp',30).order('date').fetch(100)
可能很容易看出这些查询需要不同的索引。也可能很明显,使用任何此类数据模型可以非常轻松地跨越 200 个索引限制,其中字段组合将用于过滤、排序和搜索实体。最后,考虑到有很多城市,我们可以按小时而不是每天做数据,这种数据模型中的实体数量显然可以达到数百万。
任何人都可以推荐一种方法来对这些数据进行建模,该方法允许所有查询仍然运行,同时保持在 200 个索引限制以下吗?此模型中的写入成本不是什么大问题,但我们需要超快速的读取。
【问题讨论】:
-
您需要能够对这些数字属性进行不等式过滤器还是只需要等式过滤器?
-
现在,只是相等过滤器。不等式过滤器可能会在以后出现,但暂时不会。
标签: google-app-engine nosql bigtable