2010-01-31 7 views
1

Je suis un peu confus. J'ai écrit une application Java autonome et maintenant je veux utiliser GAE à déployer sur le web et sur le chemin aussi pour en apprendre davantage sur GAE. Dans mon application, je lis les données du fichier, les stocke en mémoire, les traite, puis stocke les résultats dans la mémoire ou dans un fichier. Je comprends que maintenant j'ai besoin de stocker les résultats dans le magasin de données de GAE, ce qui est bien. Je peux donc exécuter mon programme indépendamment sur mon ordinateur, puis écrire les résultats dans un fichier, puis utiliser GAE pour télécharger tous les résultats dans le magasin de données, puis les utilisateurs peuvent l'interroger. Cependant, y a-t-il un moyen de transférer tout le processus dans l'application GAE? donc l'application lit les données du fichier, fait le traitement (utilise la mémoire sur le serveur d'application et pas mon ordinateur - a besoin d'au moins 4GB de RAM), et quand c'est fait (peut prendre 1-2 heures), écrit tout au GAE magasin de données? (donc c'est un processus interne "hors ligne" qu'aucun utilisateur n'est impliqué).Utilisation de la mémoire dans Google App Engine

Je suis un peu confus puisque Google ne mentionne rien sur le quota de mémoire.

Merci!

Répondre

8

Vous ne pourrez pas effectuer votre traitement hors connexion comme vous l'envisagez. Il y a une limite à la quantité de mémoire que votre application peut utiliser, mais ce n'est pas le problème principal. Tout le traitement dans le moteur de l'application est effectué dans les gestionnaires de requêtes. En d'autres termes, toute action que vous voulez faire exécuter par votre application sera écrite comme si elle traitait une requête Web. Chacun de ces gestionnaires est limité à 30 secondes de temps de fonctionnement. Si votre processus essaie de s'exécuter plus longtemps, il sera arrêté. Le moteur d'application est optimisé pour traiter les requêtes Web, sans effectuer de calculs lourds. Tout cela étant dit, vous pourrez peut-être décomposer vos tâches de calcul en blocs de 30 secondes et stocker des résultats intermédiaires dans le datastore ou memcache. Dans ce cas, vous pouvez utiliser une tâche cron ou une file d'attente de tâches (toutes deux décrites dans les docs du moteur de l'application) pour continuer à appeler vos gestionnaires de traitement jusqu'à ce que l'analyse des données soit terminée. En résumé, oui, il peut être possible de faire ce que vous voulez, mais cela ne vaut peut-être pas la peine. Regardez dans d'autres solutions de cloud comme Amazon EC2 ou Hadoop si vous voulez faire des choses de calcul intensif.

+0

Ceci explique les choses. Merci beaucoup! btw - Je préfère GAE car c'est gratuit pour mes besoins. Tandis que de ma compréhension, Amazon vous charge dès le début. J'ai aussi considéré Hadoop, et Amazon + Hadoop est probablement une bonne solution, mais Hadoop seul ne m'aide pas puisque c'est juste un logiciel et j'ai toujours besoin de l'infrastructure. Mais pour le moment, Hadoop n'est pas sur ma liste de priorités car le temps de calcul n'est pas un gros problème. Je pense que je vais faire le calcul hors ligne sur mon ordinateur, enregistrer tous les résultats dans des fichiers CSV, puis les télécharger dans le magasin de données GAE. – user247866

+0

vous devriez essayer Stax.net Je l'utilise maintenant et c'est très bien – Roch

+0

@mnml - l'affiche voulait une solution gratuite. stax.net ne liste pas encore les prix, et ne mentionne pas non plus qu'il y aura une option gratuite quand ils sortiront de la bêta. –