Exécution de services Web pour les grandes ou Lent Ensembles de donnéesJeans le cadre d'une application Ajax et REST, les services Web qui exposent les grands ensembles de données ou de ralentir les ensembles de données méritent une attention particulière en raison de l'exigence que la solution qui en résulte soit aussi efficace que possible. Cet article couvre les aspects suivants de la mise en œuvre de services AWeb qui expose grands ensembles de données ou de ralentir les ensembles de données: • Comprendre le contexte de ce qu'un de données volumineux ou lente série d'applications est • présentation de l'architecture globale de la solution • Déterminer comment une application doit être architecturé dans le codage des termes
Problème Vous voulez créer des services Web qui exposent les grands ensembles de données ou des ensembles de données qui prennent beaucoup de temps pour générer. Theory Beaucoup de développeurs éprouvent le besoin de montrer un grand nombre de records aux utilisateurs finaux. La première réaction de la plupart des développeurs à cette question est: «Non, il ne peut pas être fait." Pourtant, quand vous regardez les Google et Yahoo! moteurs de recherche, vous voyez que cela peut être fait. Cet article se propose de résoudre un tel problème particulier, la manière d'afficher dans le navigateur de 64.000 dossiers AWeb. S'il vous plaît noter que la solution pour un vaste ensemble de données ou de données lente ensemble de service Web est très spécialisé et ne doit pas être utilisé comme une solution générale. La complexité accrue de la solution fait qu'il est impossible pour une utilisation dans toutes les applications. Services Web qui sont une seule demande et la réponse sont simples et ne nécessitent pas de gestion d'État ou de rappels. En solution, le présent article, l'Etat et des rappels sont nécessaires. L'efficience est l'une des exigences de cette solution, mais rappelez-vous que l'efficacité est relative, et la solution sera aussi efficace que possible pour le contexte. Comme vous le savez, dans n'importe quel moteur de recherche, vous saisissez un terme ou une expression dans une zone de texte, cliquez sur le bouton Rechercher, les pages HTML correspondant sont retournés pour le terme ou l'expression que vous avez tapé po Si le moteur de recherche présente des résultats utiles n'est pas le point de cette solution. Ce qui est pertinent est le fait qu'une perquisition a été exécuté qui a abouti à une page HTML affichant 10 résultats par page de l'environ 175.000.000 résultats disponibles. Le résultat de la recherche page HTML semble bon, et la recherche a pris seulement 0,13 secondes. La vitesse de recherche devrait surprendre les utilisateurs, mais j'ai tendance à être cynique. Je suis sûr que les 0,13 secondes n'est pas un mensonge, mais la question est: qu'est-ce que les 0,13 secondes mesurer? Est la 0.13 secondes une mesure d'avoir trouvé les termes de recherche 175.000.000 pages? J'en doute, car si tel était le cas, cela reviendrait à chaque page a été trouvé en 0.00000000074286 secondes ou à chaque page a été trouvée dans les deux cycles d'horloge d'un processeur 3GHz. Ces statistiques devraient rendre quelqu'un méfier des résultats trouvés, même si les processus parallèles ont été impliquées. Donc, si les statistiques sont très approximatives, au point d'être hors de propos, ce qui se passe réellement? Le moteur de recherche est de résoudre le problème des données de grandes séries ou de ralentir l'aide d'une illusion. L'illusion est que le moteur de recherche vous présente les informations de manière rapide, même si vous voyez seulement un ruban extrêmement faible de l'information totale. Il n'est pas difficile pour un moteur de recherche pour rechercher des indices et son rendement de 10 résultats d'un grand ensemble de données. Comme les 10 résultats sont générés et retourné comme une seule page HTML, les deuxième et troisième séries de résultats sont générés. Je dirais même à parier que Yahoo! génère une liste de résultats de 100 liens trouvés. Je suppose que c'est probablement un jeu de résultats de 100 éléments parce que, au bas de la page il ya 10 liens vers des pages de résultats de recherche. Multiplier 10 et 10, et vous obtenez 100 liens. Ce qui est très intéressant est la façon dont Yahoo! vous permet de récupérer le résultat. Considérer que l'URL générée par la requête: http://search.yahoo.com/search?p=really+big+search & fr = FP-tab-web-t500 & toggle = 1 & cop = & ei = UTF-8 Sur la base de votre expérience avec les URL REST discutés dans les articles précédents, vous devriez être capable de deviner ce que les paramètres de requête individuelle faire. Avant d'expliquer ce que je pense que les paramètres de requête faire, penchons-nous sur l'URL qui apparaît après avoir cliqué sur le lien deuxième page (indiqué par "2" au bas des résultats): http://search.yahoo.com/search?p=really+big+search & toggle = 1 & ei = UTF-8 & fr = FP-tab-web-t500 & b = 11 A partir de cette URL, il semble que la recherche / est une URL racine du point de vue REST. Il en va de ce à dire que l'exécution de l'URL / de recherche renvoie tous les résultats de recherche? En théorie, oui, mais je doute qu'il serait effectivement, parce que cela signifierait un retour une liste alphabétique de toutes les pages HTML indexés dans Yahoo!, Qui est complètement irréaliste du point de vue mise en oeuvre. Je pense que Yahoo! utilise une approche REST-ful, parce que si vous cliquez sur le lien Images en haut de la page de résultats, l'URL suivant est généré: http://images.search.yahoo.com/search/images?p=really+big + Search & toggle = 1 & ei = UTF-8 & fr = FP-tab-web-t500 & tab = FR2-Avis web que l'URL des images est le / images search /, ce qui signifie que les images appartiennent à l'URL de recherche, mais ils représentent une catégorie plus spécifique de la recherche . Dans une approche de service Web REST, ce qui représente la stratégie de nommage idéal. Notez également comment les paramètres de requête pour une recherche simple et basé sur l'image sont identiques. Cela illustre à nouveau un bien conçu reste du service Web. Les paramètres de l'URL représentent un moyen de filtrer l'énorme quantité de résultats de recherche. La première méthode consiste à filtrer sur la requête elle-même, qui est défini par le paramètre de requête p. C'est une façon très habile de définir un ensemble de résultats, car cela signifie que plusieurs personnes recherchant les mêmes termes verra du même avis. Dans une perspective de recherche, Yahoo! ne fait pas de distinction entre les utilisateurs. Depuis que plusieurs personnes puissent voir les mêmes résultats, une façon de déterminer quels résultats doivent être retournées doivent être identifiés. La requête de paramètre b est l'objet en ce qu'elle définit l'index de départ des résultats de recherche. Si vous n'étiez pas certain que Yahoo! tient un serveur de jeu de résultats côté, puis le paramètre de requête B devrait vous en convaincre. La requête de paramètre b est une valeur numérique qui en effet dit: «S'il vous plaît revenir sur les liens disponibles à la liste des indices 11, 12, 13, 14, 15, 16, 17, 18, 19 et 20 de la liste de résultats très gros recherche. "The Yahoo! exemple illustre qu'un élément clé de présenter de grands ensembles de données est de créer une illusion. L'illusion dans ce cas est de présenter un sous-ensemble des résultats, avec le reste des résultats présentés quand ils sont demandés. Ainsi, si un des résultats de requête SQL dans 64.000 dossiers, l'illusion est de présenter les 100 ou si les résultats, tandis que dans l'arrière-plan préparer un autre lot de 100 ou si les résultats. La liste suivante présente les attributs d'une situation dans laquelle vous souhaitez appliquer les techniques définies dans cet article: • L'ensemble de données pourrait être interprété comme infinie. Même si il ya des limites théoriques, à partir d'un point de vue pratique l'ensemble des données semble infinie. Par exemple, n'importe quel algorithme mathématique qui génère une série de données, comme tous les carrés de nombres de 1 à 1 million, pourrait être interprété comme infinie. Un autre exemple est un moteur de recherche lié à une énorme base de données qui génère un résultat énorme en action lorsque la base de données est interrogée. • Les données ne sont pas disponibles au moment de la demande. Dans ce contexte, vous faites une demande qui déclenche une séquence d'événements. Parce que les événements exigent un certain temps de calcul, les résultats ne sont pas disponibles immédiatement. Par exemple, dans le cas d'un mashup moteur de recherche, la livraison des résultats des différents moteurs de recherche a besoin d'un peu de temps. Un autre exemple est le calcul des pertes et profits d'un portefeuille d'investissement. • Les données sont un seul bloc de nombreux éléments, et le bloc doit être considéré comme une pièce contiguë de données unique. SolutionL'architecture de données volumineux ou de ralentir jeux nécessite un composant de serveur qui supporte le multithreading ou multiprocesses, et un composant client qui comporte un mécanisme en deux canaux de communication L'architecture est un ticker exemple historique d'application. Le client dispose de deux interactions: HTTP POST et GET HTTP vers la même URL, / services / histoire / *. Au niveau technique, les deux interactions sont séparés, mais ils travaillent souvent ensemble. L'interaction POST est utilisée pour envoyer des données, et l'EEG interaction est utilisée pour récupérer des données. Techniquement, un service web REST implique une telle interaction: pour démarrer une tâche, une requête POST est envoyée, et les réponses à la tâche sont récupérés à l'aide d'un EEG. Deux techniques sont utilisées afin que le client peut recevoir des réponses multiples à une tâche d'exécution. Cette capacité est une nécessité lorsque vous travaillez avec des ensembles de données volumineux ou lent. Vous ne pouvez pas exécuter une tâche et d'attendre la réponse complète, même si l'utilisation de XMLHttpRequest en mode asynchrone ne pas arrêter le navigateur de fonctionner. Vous souhaitez récupérer des données sur une base fragmentaire parce que vous voulez afficher les résultats dès qu'ils sont disponibles. Sur le serveur, deux composantes mettre en œuvre des interactions: TaskManager et ResultCache. TaskManager répond à toutes les requêtes POST et exécute la tâche appropriée. Les différentes tâches génère ensuite leurs résultats et les ajouter à ResultCache. Lorsque le client exécute un GET, les données de ResultCache est récupéré. TaskManager est seul responsable de l'exécution des tâches et la gestion de la référence à ResultCache. TaskManager n'est pas responsable de connaître les détails des résultats générés ou de la nature de la tâche qui est exécutée. Gérer la demande du client / cycle de la réponsePour le moment, mettons de côté les URL et le côté serveur, et se concentrer sur le côté client. On peut définir les URL les plus étonnantes et les plus intéressantes du côté serveur, mais si les fonctions côté client de façon inefficace, tout le reste n'a aucune importance. Définir ce que le client peut et ne peut pas faire va un long chemin vers la définition des URL du serveur et du code côté serveur. Premièrement, penchons-nous sur un exemple de cartographie le long des lignes de http://map.search.ch ou http://maps . google.com. Vous verrez la logique de faire le défilement de la carte régulière, ainsi que la carte est composée d'un nombre de morceaux d'images 1. Le client surfe à l'URL et charge la page HTML qui contient le port de vue. 2. La page HTML POST envoie une demande de charger quatre morceaux de carte. 3. TaskManager commence une tâche qui récupère les morceaux de carte demandée. La tâche ajoute les morceaux de carte pour ResultCache. 4. La page HTML exécute une boucle périodique qui vous demande si les morceaux de carte demandée ont été ajoutés à ResultCache. Si les morceaux ont été ajoutés, puis elles sont récupérées et affichées. A ce moment, il ya donc une rupture, comme l'identifiant des pièces carte n'a pas été définie. Lorsque le chargement d'une page HTML, ce qui la carte morceaux sont chargés? Ne vous chargez le défaut? Et si vous ne chargez la valeur par défaut, quel est exactement est par défaut? Lors du chargement des morceaux de carte, vous devez d'abord déterminer comment identifier une carte piece.Defining les contraintes du client L'exemple de la cartographie montre ce que vous devez faire pour gérer de grands ensembles ou infinie de données, bien que toutes les applications qui fonctionnent avec de grandes ou infini ensembles de données ont les attributs suivants commune sur le côté client: • Le référencement de toutes les données peuvent être définis. Dans le cas de l'application de cartographie, cela signifie attribution des coordonnées à tous les morceaux de carte. Vous voulez que les données à être précédés d'un renvoi afin que le client peut aller vers les données en utilisant une approche calculée URL. Cela ne signifie pas que les données disponibles à l'adresse URL, comme du côté serveur peut ne pas encore avoir généré ces données. Les références peuvent être horodateurs, les coordonnées, ou un compteur incrémentiel, mais ils doivent posséder la capacité à être déterminée avant que les données sont chargées. • Le client se référencer directement les données du port vue et les données qui seront sans doute être visualisées. Les données qui sera probablement considéré est le look-ahead des données qui sont préchargés. L'algorithme pour déterminer les données qui va probablement être vus est totalement dépendant de l'application et l'interface utilisateur de l'application. Par exemple, la plupart des applications de cartographie ont une flèche pour déplacer la carte vers le haut et vers le bas par un morceau de carte. Si une interface utilisateur ont été d'offrir une flèche appelé "Jump 100 unités», puis la sélection qui va probablement être considéré inclurait l'immédiat ainsi que les Jump "100 unités" morceaux de carte. L'idée derrière les données qui va probablement être considéré est de laisser le client ou le serveur de la précharge de l'information, ce qui rend l'itération des données semblent comme un processus sans heurts. Dans notre cas, nous construisons une application de visualisation de téléscripteur boursier. Le client aura la possibilité de naviguer dans une liste des bannières stock et ensuite afficher l'historique de ces réglettes. Dans les clichés, les données historiques ne sont pas illustrées, car l'accent est mis sur la navigation et des manipulations de données. Navigation Liste fait la richesse des fonctionnalités ou de performances du client. Dans le cas de l'application de cartographie, les utilisateurs de naviguer en utilisant la souris pour sélectionner et faire glisser des morceaux de carte. Dans le cas de l'exemple boursier, les utilisateurs de naviguer à l'aide des flèches en déplaçant la souris sur un téléscripteur. En aucun cas vous ne devez utiliser une zone de liste ou une zone de liste déroulante pour la navigation de ces éléments ne peuvent pas contenir une quantité importante de données, de naviguer ainsi chez eux peut être une expérience désagréable. Slashdot (www.slashdot.org) a réussi à résoudre le problème des séries de données étant trop grandes en utilisant des techniques de préférence personnelle. Personnes Quelque chose comme environ Slashdot est le fait qu'ils peuvent lire une histoire, puis afficher leurs avis sur la question de la sorte comme un club de l'article pour les geeks Internet. Controversée des histoires Slashdot peuvent recueillir plus de 300 affichages, dont certains sont des ordures mais d'autres qui sont intéressants. Slashdot a été le premier site Web à employer avec succès une technique appelée metamoderation. Metamoderation, c'est quand les lecteurs sont leurs propres arbitres et déterminer si une annonce est intéressante. Bonne affectations qui sont amusants ou intéressants ont un rang plus élevé que ceux qui sont radotage. En utilisant leurs préférences personnelles, les lecteurs peuvent choisir à quel niveau ils veulent lire les messages en d'autres termes, ils peuvent choisir de ne lire que les écritures les plus intéressantes si elles aiment. C'est un système qui fonctionne. Les métadonnées sont un indice pour la navigation qui est créée sur la page HTML. un article présenté par Sonja Lande Disclaimer:Notre site n'est pas responsable du contenu de cet article. Webarticles est une ressource d'information gratuite. Important: Cet article «Mettre en œuvre des services Web pour les grandes ou Lent Data Sets" a été traduit par un logiciel automatique. Nous nous sentons désolés pour les fautes d'orthographe que mai ont eu lieu. Nous vous remercions de votre compréhension.
|
|||||
| Online: 455 users browsing the articles directory |
|
|