Question

Je vais commencer à concevoir une application Web sous peu, et même si j'ai beaucoup d'expérience dans le monde SQL, je n'ai aucune idée de ce que je dois prendre en considération pour le faire dans le but de migrer vers GAE dans le très proche avenir.

Alternativement, je pourrais concevoir l'application pour GAE dès le début, et donc dans ce cas, quelles sont les différences que je dois prendre en considération? En d'autres termes, quels sont les dos et les dons de rédiger votre application pour GAE, provenant d'un passé de bases de données relationnel.

Était-ce utile?

La solution

Juste en haut de ma tête:

  • Ce n'est vraiment qu'un magasin de valeurs de clé, ne vous laissez pas berner par des choses comme Gql (qui n'est qu'un sous-ensemble de SQL Select)
  • Pas de jointures - vous devez souvent dénormaliser ou oublier
  • Des délais de temps plus ou moins fréquents
  • (Très) accès lent par rapport à la base SQL locale.
  • Comptez très cher
  • Offset (dans SELECT) implémenté du côté client - donc en fait, vous récupérez tous les enregistrements jusqu'à décalage - Comme indiqué par Nick Johnson dans l'un des commentaires, ce n'est pas le côté client, alors maintenant, car la limite de 1000 est partie, c'est similaire aux bases de données SQL.
  • (Récemment supprimé) Limite de 1000 lignes récupérées
  • Sélectionner les performances diminuent considérablement avec l'augmentation du nombre de lignes retournées
  • Les migrations sont difficiles à faire car vous devez les faire en utilisant des demandes HTTP normales et chaque demande est tuée après 30 secondes. Vous devez recourir aux files d'attente de tâches qui traitent les lignes par lots
  • Il y a des clés étrangères pseudo - appelées références Properties dans Python API - mais elles ne sont appliquées en aucune façon - si quelqu'un / quelque chose supprime l'objet cible, vous avez ce qui est connu comme pointeur pendant C ++
  • Les champs que vous utilisez pour les requêtes doivent être indexés, mais toujours en utilisant clé (sorte de clé principale pour chaque ligne / instance) fait fonctionner vos requêtes plus rapidement
  • Les indices de construction sur l'instance en direct peuvent prendre beaucoup de temps (et vous ne pouvez pas le diminuer) et sans eux, votre application ne peut souvent pas fonctionner. Bière et patience fortement recommandée.
  • Beaucoup de limites artificielles (comme la limite maximale déjà supprimée de 1000). Par exemple, l'opérateur GQL 'In' est juste du sucre syntaxique pour plusieurs Or-S, et il y a une limite supérieure de 30 valeurs utilisées.

Tout cela signifie que vous ne pouvez probablement pas éviter d'exposer un état incohérent à l'utilisateur, et presque à coup sûr vous ne pouvez pas éviter d'avoir un état incohérent de vos données (par exemple les demi-lignes migrées et la moitié non, pendant les changements de données manuelles, etc.)

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