Question

Disons que j'ai une base de données de réservation composée d'utilisateurs :

user_id
fname
lname

et leurs billets

ticket_id
user_id
flight_no

et associés vols

flight_no
airline
departure_time
arrival_time

Qu'est-ce que je dois changer pour faire avancer ce Google AppEngine?

Je comprends AppEngine ne permet pas les jointures .

Est-ce que cela signifie ma table devrait devenir un grand schmudge des champs tout amalgame entre?

réservations :

user_id
fname
lname
ticket_id
flight_no
airline
departure_time
arrival_time

En d'autres termes, toutes mes requêtes exécutées maintenant contre la même table?

Était-ce utile?

La solution

Quels sont les changements dont vous avez besoin dépend surtout de ce que les questions que vous devez exécuter, pas sur les données que vous avez. Très probablement, vous aurez seulement ajouter deux choses.

Faites une liste de requêtes, puis jeter un oeil à restrictions sur les requêtes . Une fois que vous avez trouvé les problématiques, essayez de les réécrire avec les contraintes de BigTable à l'esprit.

Par exemple, si vous avez souvent besoin de trouver le nombre de billets pour une liste des vols, non seulement vous être en mesure de le faire:

SELECT
    flight_no, COUNT(*)
FROM
    flights
JOIN
    tickets ON tickets.flight_no = flights.flight_no
GROUP BY
    flight_no

Vous aurez besoin d'ajouter un compteur de billets pour flights et incrément / décrément que lors de la création / suppression de billets.

bon côté de cela est que les forces BigTable vous d'avoir une conception de base de données très évolutive. Mauvais côté est qu'il gaspille beaucoup de temps quand vous ne vraiment pas besoin une conception évolutive.

Autres conseils

Vous pouvez utiliser de véritables bases de données relationnelles SQL à partir d'applications Google AppEngine, par un webservice.

Un tel webservice est Rdbhost, http://www.rdbhost.com .

Il implique ses compromis, vitesse particulièrement, en ce que chaque page vue nécessite une autre requête de page http backend au serveur db, mais il vous permet d'utiliser les connaissances de conception SQL que vous avez déjà.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top