Quais as mudanças que eu preciso para minhas tabelas para trabalhar em BigTable do AppEngine?
-
06-09-2019 - |
Pergunta
Digamos que eu tenho um banco de dados de reserva consistindo em usuários :
user_id
fname
lname
e seus bilhetes
ticket_id
user_id
flight_no
e associados Vôos
flight_no
airline
departure_time
arrival_time
O que eu preciso mudar para mover este Google AppEngine?
Eu entendo AppEngine não permite que se junta ??em>.
Isso quer dizer minha mesa deve tornar-se um grande schmudge de campos todos agrupados?
reservas :
user_id
fname
lname
ticket_id
flight_no
airline
departure_time
arrival_time
Em outras palavras, todos os meus consultas agora correr contra a mesma tabela?
Solução
O que muda você precisa depende principalmente de quais consultas você precisa correr, não sobre os dados que você tem. O mais provável é que você só terá que adicionar um par de coisas.
Faça uma lista de consultas e, em seguida, dar uma olhada restrições em consultas . Depois de ter encontrado os problemáticos, tente reescrevê-los com restrições de BigTable em mente.
Por exemplo, se você muitas vezes precisa encontrar o número de bilhetes para uma lista de voos, você não vai apenas ser capaz de fazer:
SELECT flight_no, COUNT(*) FROM flights JOIN tickets ON tickets.flight_no = flights.flight_no GROUP BY flight_no
Então, você precisa adicionar um contador de bilhetes para flights
e aumentar / diminuir que ao criar / apagar bilhetes.
Boa parte disso é que BigTable obriga a ter um design de banco de dados muito escalável. Bad lado é que ele desperdiça muito do seu tempo quando você realmente não necessidade um design escalável.
Outras dicas
Você pode usar bancos de dados relacionais SQL genuínos a partir de aplicativos Google AppEngine, através de um webservice.
Um desses webservice é Rdbhost, em http://www.rdbhost.com .
Trata-se de seus compromissos, em particular a velocidade, em que cada exibição de página requer uma outra solicitação de página backend http ao servidor db, mas ele permite que você use o conhecimento de design SQL que você já tem.