Проблема моделирования данных в App Engine - PullRequest
1 голос
/ 12 августа 2010

Я немного новичок в моделировании моей модели данных для эффективных запросов с помощью GAE, но обладаю обширными знаниями в области RDBMS.

Вот проблема: я получил примерно миллион терминов (строк) и мне нужно запросить и сравнить связанные числовые значения в виде временного ряда с недельными точками данных.Думайте об этом как график со временем на оси X и линейной оси Y, показывающий числовые меры.

До сих пор я получал дискретные точки данных за семестр и день в хранилище данных, и я ищу способ агрегирования данных по неделям и сохраненияданные, чтобы я мог эффективно запросить хранилище данных.Я думал о предварительном расчете ряда временных рядов различной продолжительности (4 недели, 5 недель, 6 недель и т. Д.) За семестр и сохранял каждую запись как {term, start_week, [time series]}

. С помощью RDBMS я мог бы легко группировать по неделям исоздавать серии данных программно, либо в виде хранимой процедуры, либо в бэкэнде приложения.Из-за ограничений GAE и природы BigTable как высокораспределенной системы это не вариант.

Любые идеи высоко ценятся!

1 Ответ

2 голосов
/ 12 августа 2010

Подход, к которому вы идете, кажется разумным, но все зависит от вида запросов, которые вам нужно выполнить. Предполагая, что вам нужно искать временные ряды по имени (строке) и неделе, и вы, как правило, хотите получать данные, скажем, от 1 до 100 недель подряд, я бы предложил следующее:

  • Имейте одну сущность для данных каждой недели за каждый семестр, как вы предлагаете
  • Вместо того, чтобы хранить данные «свободно» и периодически их агрегировать, сохраняйте новые точки непосредственно в этой форме. Всякий раз, когда вы получаете новую точку данных, если это первая точка недели, создайте новую сущность. Если это не так, извлеките существующую сущность на эту неделю и добавьте к ней свою точку данных.
  • Если вы хотите построить данные, запросите требуемый термин и период времени и извлеките результаты в порядке времени.
...