Jestem na wczesnym etapie tworzenia strony statystyk sportowych (ostateczna frisbee) i chciałbym poznać twoje opinie, jeśli Google App Engine jest odpowiedni dla mnie.Złożone zapytania za pomocą datastore GAE
Piszę to w Pythonie używając Django i od lat czuję się komfortowo ze standardowymi RDBMS, ale ta strona jest projektem długoterminowym i spodziewam się bardzo dużej ilości danych, więc chciałbym "nieskończonego" skalowania, które GAE oferty datastore. Ogromna większość zapytań do bazy danych zwróci bardzo standardowe wyniki, które sprawiają, że datastore wydaje się logicznym wyborem. Chciałbym jednak móc w przyszłości wykonywać niezwykle złożone zapytania, aby wymyślić nowe dane statystyczne lub po prostu wymyślić interesujące wyniki. Planuję zrobić dużo tego w przyszłości, ale nie będę wiedział, jakie są te zapytania, dopóki dane nie zostaną już zebrane.
Na przykład często widzisz analityków statystyk baseballowych, którzy wymyślają absurdalne statystyki, takie jak "To jest tylko pierwszy raz w ciągu ostatnich 50 lat, że dwóch leworęcznych dzbanów, których nazwiska zaczynają się od" Z ", rzuciło jeden raz hit shutouts w dni powracające do tyłu ". Chciałbym mieć elastyczność w podejmowaniu jakichkolwiek pytań w przyszłości. :)
Mam jednak wrażenie, że nierelacyjna baza danych, taka jak bigtable, wymaga wcześniejszego opracowania modeli zawierających nadmiarowe dane, a cała praca odbywa się na insertach, a nie w pobieraniu. Zbudowałem już modele django, które zawierałyby praktycznie wszystkie dane, których potrzebuję do zapytania, ale nie mam pojęcia, jakie denormalizowane modele będę potrzebować od roku lub dwóch. Dlatego mam wrażenie, że tworzenie złożonych zapytań w przyszłości byłoby niezwykle trudne w magazynie danych GAE i wymagałoby ode mnie wyciągnięcia mnóstwa informacji z serwera przed przetworzeniem go w pythonie.
Czy dane magazynu aplikacji wyszukiwarki Google są po prostu złe dla tego, co chcę zrobić? Albo po prostu czegoś brakuje. Dziękuję bardzo z góry!
Dzięki za odpowiedzi do tej pory. Zdaję sobie sprawę, że muszę również wspomnieć, że wiele z tych złożonych zapytań to zapytania, które chciałbym, aby użytkownicy mogli wykonywać, co czyni z bazy danych offline naprawdę nierealną opcję. Na przykład, użytkownicy powinni mieć dostęp do różnych statystyk dotyczących tego, jak dobrze dwoje dwóch konkretnych graczy gra, gdy są na polu w tym samym czasie w określonych grach lub porach roku. Chociaż zapytania te nie są tak częste jak standardowe statystyki zagregowane, nadal będą występować z regularnością.
Posiadanie relacyjnej bazy danych, a także bazy danych GAE, byłoby wspaniałe, ale django domyślnie nie obsługuje wielu baz danych, a łatanie rozwiązania razem wydaje się trudne i niechlujne. Eric Florenzano ma numer nice solution dla dwóch baz danych, które używają modeli django, ale gdybym miał użyć magazynu danych GAE, musiałbym zamiast tego użyć modelu db silnika aplikacji. A znalezienie dobrego rozwiązania, takiego jak w przypadku tego złożonego problemu, jest w tym momencie nieco poza moim poziomem umiejętności.
Obecnie moje ulubione dwie opcje używają kolejki zadań GAE do wykonywania trudnych zapytań lub przechodzenia do bardziej standardowego webhostingu, takiego jak webfaction, a następnie denormalizują moje tabele później, gdy moje dane będą rosły i potrzebuję zwiększyć wydajność.
Miałem nadzieję, że odpowiesz :). Dzięki za dwie świetne sugestie. Zaktualizowałem moje pytanie, aby rozwiązać potencjalny problem w Twojej pierwszej sugestii. Co do twojej drugiej, nie zdawałem sobie sprawy, że istnieje kolejka zadań! Zajmie to trochę czasu, ale zastanawiam się, czy to rozwiąże wszystkie moje problemy. – Spike
Kilka lat później, tak ..ale ta odpowiedź jest nadal złota, ale teraz możesz użyć google sql w chmurze zamiast bazy danych offline i mieć swoje ciasto i je też! (http://stackoverflow.com/q/10905861/525541) – MindWire