Я нахожусь на ранней стадии разработки сайта по спортивной статистике (фрисби) и хотел бы узнать ваше мнение, подходит ли мне Google App Engine.
Я пишу это на Python, используя Django, и уже много лет знаком со стандартной СУБД, но этот сайт - долгосрочный проект, и я ожидаю очень большие объемы данных, поэтому мне бы хотелось "бесконечное" масштабирование, которое хранилище данных GAE предложения. Подавляющее большинство запросов к базе данных будут возвращать очень стандартные результаты, которые сделают хранилище данных логичным выбором. Тем не менее, я хотел бы иметь возможность делать чрезвычайно сложные запросы в будущем, чтобы предлагать новые статистические метрики или просто предлагать интересные результаты. Я планирую многое сделать в будущем, но не буду знать, что это за запросы, пока данные не будут собраны.
Например, вы часто видите, как аналитики бейсбольной статистики придумывают смешную статистику, такую как «Это первый раз за последние 50 лет, когда два левых кувшина, чьи фамилии начинаются с« Z », бросили одиночные удары в дни назад ". Я хотел бы иметь возможность делать любые запросы в будущем. :)
Однако у меня сложилось впечатление, что нереляционная база данных, такая как bigtable, требует, чтобы вы заранее разработали модели, содержащие избыточные данные, и вся работа выполняется на вставках, а не на выборках. Я уже построил модели django, которые будут содержать практически все данные, к которым мне когда-либо понадобится запрашивать, но я понятия не имею, какие денормализованные модели я хочу иметь через год или два. Таким образом, я чувствую, что выполнение сложных запросов в будущем будет чрезвычайно сложным для хранилища данных GAE и потребует от меня удаления тонны информации с сервера перед обработкой в python.
Является ли хранилище данных движка приложений Google просто неправильным для того, что я хочу сделать? Или просто что-то упустил. Большое спасибо заранее!
Обновление:
Спасибо за ответы до сих пор. Я понимаю, что должен также упомянуть, что многие из этих сложных запросов - это запросы, которые я хотел бы, чтобы пользователи могли выполнять, поэтому создание автономной базы данных на самом деле не вариант. Например, пользователи должны иметь возможность видеть различные статистические данные о том, насколько хорошо играют два конкретных игрока, когда они находятся на поле одновременно в течение определенных игр или сезонов. Хотя эти запросы встречаются не так часто, как стандартные статистические показатели, они все же будут выполняться с регулярностью.
Было бы неплохо иметь реляционную базу данных, а также хранилище данных GAE, но django пока не поддерживает несколько БД по умолчанию, а исправление решения вместе кажется сложным и грязным. Эрик Флоренцано предлагает хорошее решение для двух баз данных, в обеих из которых используются модели django, но если бы я использовал хранилище данных GAE, мне пришлось бы вместо этого использовать модель db движка приложения. И придумать хорошее решение, как он сделал для этой сложной проблемы, немного выше моего уровня квалификации на данный момент.
Прямо сейчас мои любимые два варианта - использовать очередь задач GAE для выполнения сложных запросов или переходить на более стандартный веб-хостинг, такой как веб-фракция, а затем просто денормализовать мои таблицы позже, когда мои данные вырастут, и мне нужно повысить производительность.