Quels changements ai-je besoin pour mes tables de travailler sur BigTable de AppEngine?
-
06-09-2019 - |
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?
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à.