我计划将我的就职数据加载到GAE中,并且真的想让我的鸭子连续不断。我使用的语言是Python。我的问题是存储在app引擎中存储只读时态数据。
我有一个大约50k行乘以30列的电子表格。
这是历史数据,表格是只读的。
我设想按星期几的顺序排序(显示7月的周末等等)以及时间(不一定总是有日期 - 但有时候有)所以我最初的想法是创建一个额外的行和填充在先前计算的“星期几”中。
eg.
date, time, dayofweek, event, geolocation, etc
27-02-2009, 08:20:00, 'Friday' ...
上面显示的日期和时间反映了电子表格ATM的来源。
如果我要去计算“dayofweek”的麻烦,我认为这是一个好主意,并且考虑到你对GAE数据存储模型的体验,我应该:
- 只有一个日期时间吗? (并且让GAE在未来的排序/请求期间计算出一周中的哪一天?) - 每天创造一天,但有一个日期? '2009-02-27 08:10:00' - 以整数形式存储星期几? (0 = Python IIRC周一) - 商店日期为'2009-02-27'而不是?
输出将始终为英语,也可能是JSON。这是一个数据可视化研究,一些额外的时间动画可以在客户端完成 - 但我主要关注的是保持GAE中的工作完成,我承认这可能只是一个小小的迷信。
答案 0 :(得分:3)
如果您打算根据星期几进行查询 - 也就是说,您需要选择几个星期五,而不是相邻的日子 - 您应该绝对将其分解为单独的属性,因为这样可以实现为它做有效的查询。
按照您的建议,要进行“七月的星期五”查询,您可以选择以下几种方法:
答案 1 :(得分:1)
您应该只有一个日期时间。这将允许您的系统在将来需要时被其他系统使用。我还认为可计算项不应存储在DB中,因为某些计算的参数会随着时间的推移而发展。
HTH,
答案 2 :(得分:1)
如果您想获得最佳性能,可以在密钥名称中添加dayofyear和year。 例如,我做的是我构建这样的键: 分析:124:2011
然后很容易得到最后30天让我们。只需创建一个列表生成器,它将为最后30天创建一个键列表
from datetime import datetime
dof = datetime.now().timetuple()
keys = [db.Key.from_path("Analytic","%i:%i"%(dof-i,2011)) for in in xrange(0,30)]
analytics = db.get(keys)
答案 3 :(得分:1)
我同意你肯定想以对查询有意义的方式分解你的约会。将一些信息构建到密钥中也可以按照建议使用。但这并不总是可行的。例如,密钥可能存在竞争关注。 另一种选择是仅基于日期构建查询索引并使用祖先/父关系。然后,您可以对面向日期的实体执行仅键查询,并使用它们来获取父项。
最后一件事,我建议你,但是你要分解日期,做也要完整地存储日期时间。如果出现了一些错误或者你改变了计划,你可能会想要他以后。