Salut les gars j'ai besoin de votre opinion.Je suis dans une situation où j'ai besoin d'utiliser ajax donc j'ai besoin d'interroger les informations des utilisateurs toutes les 30 secondes ..... qui est plus efficace d'interroger le serveur un fichier texte d'abord) et s'il y a une mise à jour pour une information utilisateur, faites une requête de base de données complète ou interrogez directement la base de données directement toutes les 30 secondes.Veuillez expliquer votre raisonnement afin que je puisse peser ma décision ...... .Merci d'avance.Serveur ou base de données
Répondre
dépend du nombre d'utilisateurs dont vous disposez, mais effectuer une opération d'interrogation ne sera pas forcément échelonné.
Vous devriez jeter un oeil à l'architecture comet. Vous devriez coder un middleware qui ne parlerait à la base de données qu'en cas de besoin et ferait beaucoup de choses en mémoire ou sur un fichier plat. Le middle ware ferait une mise en cache entre votre frontend (serveur web) et le backend réel (base de données).
Je vous conseille également de regarder dans memcachedb (ou toute clé/valeur DB engine) pour coder votre middleware.
Si vous n'avez pas trop d'utilisateurs, vous pouvez conserver un schéma d'interrogation.
Je mettrais en cache sur le serveur Web une durée de vie de 30 secondes et récupérais toutes les données utilisateur pour minimiser les allers-retours à la base de données. Je voudrais également que le client utilise le cache web, pas aller à la base de données.
Il est beaucoup de frais généraux pour un gain minime sinon
Si vous avez un petit nombre d'utilisateurs et quelques clients Web, puis mettre en œuvre la solution la plus simple. Raisonnement: Il n'est pas nécessaire d'optimiser quelque chose comme ceci, sauf si vous avez de graves problèmes de performance. Je commence à penser à cela si:
- Il y a des milliers d'utilisateurs dans le DB
- Cette information a été requêtes chaque seconde par des centaines de clients Web
Mais si vous avez 10 utilisateurs, alors cela se traduit probablement par 10 navigateurs Web demandant cette information toutes les 30 secondes. Vous devriez vous soucier de la CPU pauvres sur vos serveurs, car il va se ennuyer à mort;)
+1 pour KISS ..... –
Je voudrais première mesure si la version simplifiée (semble base de données interroger directement en premier) n'est pas assez bon . Puis, si cela ne suffit pas, cherchez une meilleure solution (toujours en mesurant les résultats).
Il y a beaucoup à ifs et dépend de vous donner de bons conseils à distance.
Je ne suis pas sûr d'avoir besoin de la mise en cache, mais peut-être que je suis naïf? Comment le cache sait-il si les données ont changé ou non?
SELECT ... lots of columns FROM MyTable WHERE UserID = 1234 AND LastUpdated > @MyLastUpdated
va seulement faire un travail sérieux lorsque l'ET est vrai? Si vous obtenez zéro lignes, il n'a pas changé - ou UserID = 1234 n'existe plus, mais si vous avez besoin de savoir que la requête pourrait être modifiée pour retourner cela aussi).Ainsi, je ne pense pas qu'il soit nécessaire de faire une requête "Has UserID = 1234 changed since @MyLastUpdated" suivie d'un SELECT * complet.
Si vous récupérez la valeur de LastUpdated dans la liste des colonnes, stockez-la, puis elle est disponible en tant que paramètre lors de la prochaine vérification si UserID = 1234 a changé. (LastUpdated n'est pas la dernière fois que vous avez vérifié, mais le moment où l'enregistrement a été mis à jour pour la dernière fois, mais il doit être créé par la même horloge à chaque fois, en dehors du PC du client !!), et en tenant compte de ce qui se passe avec l'heure d'été à l'automne.)
- 1. Utilisateurs dans le serveur de base de données ou les tables de base de données
- 2. serveur base de données disconneting
- 3. Base de données relationnelle ou base de données NoSQL
- 4. Base de données du serveur SQL "Lost"
- 5. Tableau ou tableau de base de données?
- 6. Lecture des données Base de données du serveur SQL
- 7. Meilleure façon de synchroniser la base de données client avec la base de données du serveur
- 8. Base de données Modification ou recommencer?
- 9. Base de données binaire alignée ou empaquetée
- 10. Base de données Web ou SOAP?
- 11. Base de données MySQL: lua ou python
- 12. Données de base: héritage, STI ou autre?
- 13. jQuery de base/données ou des attributs personnalisés (données-Driven)
- 14. Transport de données sécurisé entre le serveur Web et le serveur de base de données
- 15. Mise à jour de la base de données MySql du serveur local à partir du serveur Base de données MySql
- 16. Comment déplacer une base de données MySQL locale vers un serveur de base de données distant
- 17. connexion de base de données SQL sur le serveur distant
- 18. Besoin d'informations sur le serveur de base de données Oracle
- 19. Utilisation de la base de données du serveur réseau
- 20. contrôle serveur de base
- 21. Silverlight3: Que utiliser: WebClient ou base de données avec RIA
- 22. Comment ajouter une base de données mdf à la base de données du serveur SQL sql
- 23. php5, base de données SQL et hôte du serveur Web
- 24. Synchronisation de base de données hors connexion avec le serveur
- 25. Base de données SQLite côté serveur avec Google Web Toolkit ou JQuery
- 26. serveur SQL: Comment vérifier la base de données a catalogue ou non
- 27. Données brutes ou valeurs précalculées dans la base de données?
- 28. Stocker des données dans Lucene ou base de données
- 29. BLOB ou Base de données normalisée avec des données textuelles?
- 30. Synchronisation de postgres et serveur de base de données mysql?
+1 pour GET conditionnel – Piskvor