Приложение GAE и GQL - PullRequest
       3

Приложение GAE и GQL

1 голос
/ 11 января 2011

Мне нужно создать приложение, которое будет собирать следующую информацию (NameOfWebSite, DateTimeofVisit), и после этого я хочу получать информацию о количестве посещений за определенный период (месяц, неделя, год), отсортированных по количеству посещений. за период. Например:

www.google.com 2345 посещений за определенный период

www.yahoo.com 1254 посещения за определенный период

www.abracadabra.com 5 посещений за определенный период

Могу ли я сделать это с помощью GQL? В обычном SQL это будет что-то вроде

выберите NameOfWebSite, количество (*) из TABLE группа по NameOfWebSite где DateTimeofVisit> XXX и DateTimeofVisit

Как лучше реализовать эту логику в терминах GAE и GQL?

Ответы [ 2 ]

1 голос
/ 12 января 2011

GQL не поддерживает GROUP BY и агрегатные функции, такие как COUNT, MAX. Вот почему он называется GQL вместо SQL. Проверьте GQL Reference для получения дополнительной информации.

Google App Engine не допускает агрегатные функции, это компромисс, который сделан для масштабируемости. Поэтому, если вам нужно выполнить агрегатные функции над вашим набором данных, вы должны сделать это самостоятельно. Если это простой счетчик, вы можете хранить счетчик и увеличивать его каждый раз, когда добавляете запись, соответствующую критериям. Для более сложных агрегатных функций с нечеткими измерениями (для группировки) вы должны предложить собственное решение. Нет простого ответа.

Предложение Ника может быть одним из решений; имея задачу проверять условия и регулярно вычислять агрегатные функции. Но это никогда не будет точным, это всегда будет что-то приблизительное. Именно поэтому Google не показывает точное количество результатов, соответствующих конкретному поисковому запросу, потому что они не знают, по крайней мере, они не хотят его вычислять, они просто дают оценку.

0 голосов
/ 12 января 2011

Вы не можете сделать это напрямую в GQL.Вместо этого вы должны использовать API mapreduce или свою собственную задачу очереди задач для регулярного вычисления агрегатов и сохранения их в хранилище данных.

...