2009-06-14 4 views
2

Nous voulons recueillir des statistiques d'utilisation avec notre application. Par conséquent, nous voulons suivre les actions des utilisateurs quelque part du côté serveur.Performance: Banque de données écrit par rapport à l'historique des requêtes écrit

Quelle option est plus appropriée, la performance sage:

  1. actions de l'utilisateur Track dans l'App Engine Demande Log. c'est-à-dire écrire une entrée de journal pour chaque action de l'utilisateur.
  2. Suivre les actions de l'utilisateur dans une table du magasin de données. Ecrire une entrée pour chaque action de l'utilisateur.

Je suppose que les écritures de journal de demande sont beaucoup plus rapides que les écritures Datastore. Est-ce correct? Quelles sont vos expériences et suggestions?

Merci: Henning

Répondre

4

Je peux confirmer (par ma propre observation empirique, que: Je ne vois pas abordée dans les documents officiels) que l'écriture d'une entrée de journal est plus rapide que l'écriture d'une entrée de stockage. En y réfléchissant, cela a du sens: les entrées de journal sont toujours ajoutées, pas d'index, pas de problèmes transactionnels particuliers (au-delà de l'atomicité de chaque écriture d'entrée de journal), etc etc; étant si strictement limité, il est logique qu'ils puissent être plus optimisés. Cependant, une fois (très très tôt dans les jours pré-bêta il y a plus d'un an) j'ai observé un cas où je pensais que devait être une entrée de journal que j'avais écrite mais que je ne pouvais pas trouver; J'ai été incapable de reproduire l'observation, cela peut avoir été un petit problème dans mon code ou un bug depuis fixé dans GAE, mais cela me pose un petit question sur l'intégrité des données - quelle est l'intégrité des logs? Tant que je ne verrai pas explicitement quelque chose dans les documents, je ne vais pas pouvoir compter sur les journaux pour une intégrité à 100% - si perdre accidentellement un record sur un million serait une tragédie absolue, peut-être aller à la les garanties plus élevées du magasin valent l'impact de la performance.

+2

Je suis d'accord. Il n'est pas bien établi que les journaux sont suffisamment fiables pour la tenue de livres importants. Mais pour les statistiques de base je les utiliserais pour éviter le quota de datastore et éventuellement un index. Pour moi, le problème majeur est d'obtenir les logs * off * moteur de l'application. Il y a beaucoup de potentiel de perte de données puisque les journaux sont sur un tampon circulaire. – JasonSmith

2

journaux de demande sont très vite - il n'y a pas besoin d'un aller-retour sur chaque relevé de l'exploitation forestière; les journaux peuvent être accumulés et poussés après la fin de la requête de l'utilisateur. Toutefois, pour autant que je sache, il n'y a pas d'accès par programme pour demander des journaux. Si vous en avez besoin, vous devez donc utiliser le magasin de données.

Si vous voulez le meilleur des deux mondes, garder un œil sur la tâche API de file d'attente, d'être libéré très bientôt. :)

+1

Merci. En fait, il existe un moyen d'accéder aux journaux des demandes, vous pouvez les télécharger avec le script appcfg.py. Comme les vieux journaux sont supprimés, je vais devoir les télécharger régulièrement cependant. – henning77

Questions connexes