Мой опыт работы в реляционных БД, и я немного экспериментирую с Google AppEngine, в первую очередь для обучения. Я хочу создать «избирательное» приложение, в котором пользователь принадлежит государству (Калифорния, Нью-Йорк, Техас и т. Д.), Выбирает партию (республиканец, демократ и т. Д.) И голосует за определенный год (пока что 2012, но приложение может быть повторно использовано в 2016 году).
Я хочу, чтобы пользователь мог видеть свою историю голосования и, возможно, изменить ее один раз для текущих выборов. Кроме того, я буду требовать, чтобы пользователи указывали свой почтовый индекс и думали, что было бы неплохо запускать некоторые отчеты по штатам и / или почтовым индексам.
Используя реляционную БД, кажется, вы бы создали несколько таблиц, подобных этой:
Users(userid, username, city, state, zip)
UserVote(userid, year, vote)
А затем используйте SQL для запуска отчетов. С хранилищем данных AppEngine кажется, что запускать сводные отчеты довольно сложно.
Мое первоначальное решение было бы разделить на User
, где каждый пользователь может содержать список Votes
, а затем, возможно, дважды сохранить агрегаты в другом месте.
Есть предложения?
P.S. Я видел проект AppEngine-MapReduce , но не уверен, что это излишне.