Quali cambiamenti ho bisogno per le mie tabelle di lavorare su BigTable di AppEngine?
-
06-09-2019 - |
Domanda
Diciamo che ho una base di dati di prenotazione che consiste di Utenti :
user_id
fname
lname
e la loro biglietti
ticket_id
user_id
flight_no
e associati voli
flight_no
airline
departure_time
arrival_time
Che cosa avrei bisogno di cambiare per spostare questo Google AppEngine?
Capisco AppEngine non consente unisce .
Questo significa che il mio tavolo dovrebbe diventare un unico grande schmudge dei campi tutti ammassati insieme?
prenotazioni :
user_id
fname
lname
ticket_id
flight_no
airline
departure_time
arrival_time
In altre parole, tutte le mie domande ora corsa contro la stessa tabella?
Soluzione
Ciò che cambia è necessario dipende soprattutto quali query è necessario eseguire, non su ciò che i dati che avete. Molto probabilmente si avrà solo aggiungere un paio di cose.
Fare una lista di domande e poi dare un'occhiata a restrizioni query . Dopo aver trovato le problematiche, cercare di riscriverle con i vincoli di BigTable in mente.
Per esempio, se avete spesso bisogno di trovare il numero di biglietti per una lista di voli, non sarà solo in grado di fare:
SELECT flight_no, COUNT(*) FROM flights JOIN tickets ON tickets.flight_no = flights.flight_no GROUP BY flight_no
Quindi, è necessario aggiungere un contatore di biglietti per flights
e incremento / decremento che durante la creazione / eliminazione di biglietti.
Buona parte di questo è che le forze BigTable di avere una progettazione di database molto scalabile. lato negativo è che spreca un sacco di tempo in cui non si ha realmente necessità un design scalabile.
Altri suggerimenti
È possibile utilizzare SQL database relazionali genuini app AppEngine di Google, attraverso un webservice.
Una tale webservice è Rdbhost, a http://www.rdbhost.com .
Si tratta di suoi compromessi, in particolare di velocità, dal fatto che ogni visualizzazione della pagina richiede un'altra richiesta di pagina http back-end per il server db, ma consente di utilizzare le conoscenze di progettazione di SQL che già avete.