Я ищу некоторую помощь в отношении наилучшего способа структурирования данных в приложении ndb с помощью python, обработайте его и запросите позже. Я хочу хранить данные о температуре с почасовыми интервалами для разных географических регионов.Структурные данные в приложении engine ndb и ускорении запроса
Я могу представить два варианта сущности, но там может быть что-то намного лучше. Первым будет хранить почасовую температуру в индивидуальных свойствах:
class TempData(ndb.Model):
region = ndb.StringProperty()
date = ndb.DateProperty()
00:00 = ndb.FloatProperty()
01:00 = ndb.FloatProperty()
...
23:00 = ndb.FloatProperty()
Или я мог бы хранить данные
class TempData(ndb.Model):
region = ndb.StringProperty()
date = ndb.DateProperty()
time = ndb.TimeProperty()
temp = ndb.FloatProperty()
(это может быть лучше, дату и время хранения в качестве одного свойства?)
Я хочу, чтобы иметь возможность запрашивать хранилище данных, чтобы рассчитать общую, максимальную, минимальную и среднюю температуру для любого заданного диапазона дат. В первом варианте я мог бы создать еще 4 свойства для эффективной предварительной обработки и хранения Total, Max и т. Д. Для каждого дня, поэтому, если бы я хотел запросить общую температуру в течение года, мне пришлось бы суммировать 365 значений, а не 8760 ? Я не уверен, как это сделать во втором варианте?
Я относительно новичок в области приложений и хранилища данных, и я думаю, что я все еще думаю с точки зрения отношений db, поэтому любая помощь будет действительно оценена. Позже может потребоваться хранить данные в разных часовых поясах.
Благодаря
Пол
Спасибо Алекс, это имеет смысл. Что произойдет, если будет отсутствующее значение, могу ли я просто сохранить пустое значение для запроса по исключению позже? Будет ли способ запросить повторное свойство, чтобы получить максимальную температуру в 12:00 вечера, например? – Ron
@Ron, вы можете сохранить 'float ('NaN')' в качестве держателя места для отсутствия данных.Конечно, если вы делаете арифметику на «NaN», в Python она распространяется, поэтому, если вы хотите получить максимальную или максимальную максимальную силу для даты с отсутствующими данными, вам придется отфильтровать «NaN's yourseif» в вашем Python код. Что касается «max temp at 12: 00», вам нужно будет сначала получить все соответствующие объекты, а затем использовать цикл Python для определения результата. Определение точно, какие запросы, которые вы будете использовать, часто нуждаются в быстром ответе, * важно * при использовании любая база данных NoSQL. –
Спасибо, Алекс, я дам ему – Ron