Implementierung von Web Services für Groß-oder Slow-Data SetsIn im Rahmen einer Ajax und REST-Anwendung, Web Services, die große Datenmengen aussetzen oder langsam Datensätze verdienen besondere Aufmerksamkeit, weil die Forderung, dass die entstehende Lösung so effizient wie möglich. Dieser Artikel behandelt die folgenden Aspekte der Umsetzung AWeb Dienst, macht große Datenmengen oder langsame Daten-Sets: • Verständnis im Rahmen dessen, was eine große oder langsam Datensatz Anwendung • Darlegung der allgemeinen Architektur der Lösung • Festlegung, wie eine Anwendung bei der Codierung Begriffe architected sollte
Problem Sie wollen Web-Services erstellen, die große Datenmengen oder Daten offen legt, dass eine lange Zeit zu generieren, zu nehmen. Theory Viele Entwickler Erfahrung die Notwendigkeit, eine große Anzahl von Aufzeichnungen zeigen an Endverbraucher. Die erste Reaktion der meisten Entwickler haben zu diesem Thema ist: "Nein, es kann nicht sein." Doch wenn man sich die Google und Yahoo! Suchmaschinen sehen Sie, dass es getan werden kann. Dieser Artikel zielt darauf ab, ein solches Problem konkret lösen, wie man 64.000 Datensätze in AWeb Browser anzuzeigen. Bitte beachten Sie, dass die Lösung für eine große Datenmenge oder langsam Datensatz Web Service ist sehr spezialisiert und sollte nicht als allgemeine Lösung eingesetzt werden. Die zusätzliche Komplexität der Lösung ermöglicht es unpraktisch für den Einsatz in jeder Anwendung. Web-Services, dass eine einzige Anfrage und Antwort sind einfach und erfordern keine Verwaltung der staatlichen oder Rückrufe. Bei der Lösung dieses Artikels ist, sind Staat und Rückrufe erforderlich. Effizienz ist eine der Voraussetzungen dieser Lösung, aber denken Sie daran, dass die Effizienz relativ ist, und die Lösung wird so effizient wie möglich für den Kontext. Wie Sie wissen, in einer Suchmaschine, geben Sie einen Begriff oder Satz in einem Textfeld, klicken Sie auf die Schaltfläche "Suchen", und die entsprechenden HTML-Seiten sind für den Begriff oder Satz, den Sie eingegeben haben wieder in. Ob die Suchmaschine nützliche Ergebnisse präsentiert, ist nicht der Sinn dieser Lösung. Entscheidend ist vielmehr die Tatsache, dass eine Suche ausgeführt wurde, in einer HTML-Seite mit 10 Ergebnisse pro Seite der rund 175.000.000 vorliegenden Ergebnissen geführt hat. Die HTML-Seite der Suchergebnisse sieht gut aus, und die Suche dauerte nur 0,13 Sekunden. Die Suchgeschwindigkeit sollten Benutzer erstaunt, aber ich eher zynisch zu sein. Ich bin sicher, dass die 0,13 Sekunden nicht, ist eine Lüge, aber die Frage ist, was will der 0,13 Sekunden zu messen? Ist die 0,13 Sekunden, die ein Maß für die unter den Suchbegriffen in 175.000.000 Seiten gefunden? Ich bezweifle es, denn wenn dies der Fall wäre, würde das bedeuten, jede Seite wurde in 0,00000000074286 Sekunden gefunden werden, oder jeder Seite in zwei Taktzyklen eines 3GHz CPU gefunden. Diese Statistik sollte jemand vorsichtig der Ergebnisse, auch wenn parallele Prozesse beteiligt waren. Also, wenn die Statistiken sind sehr nähern sich dem Punkt, dass unerheblich ist, was eigentlich vor sich geht? Die Suchmaschine ist die Lösung des Problems von großen Datenmengen oder langsam über eine Illusion. Die Illusion ist, dass die Suchmaschine Ihnen die Informationen in einer schnellen Weise präsentiert wird, auch wenn Sie sehen, sind nur eine äusserst kleine Splitter des gesamten Informationen. Es ist nicht schwer, eine Suchmaschine ihrer Indizes und zurück 10 Ergebnisse einen riesigen Daten-Set zu suchen. Da die 10 Ergebnisse erzeugt werden und als einzelne HTML-Seite zurück, die zweite und dritte Chargen der Ergebnisse generiert werden. Ich würde sogar die Vermutung, dass Yahoo! erzeugt eine Ergebnisliste von 100 gefundenen Links. Ich denke, dass es wahrscheinlich ist ein Ergebnis von 100 Elementen, da im unteren Bereich der Seite gesetzt Es gibt 10 Links Seite der Suchergebnisse. Multiplizieren 10 und 10, und Sie erhalten 100 Links. Was sehr interessant ist, wie Yahoo! können Sie die Ergebnismenge abzurufen. Betrachten Sie die URL von der Abfrage erstellt: http://search.yahoo.com/search?p=really+big+search & fr = FP-tab-web-t500 & toggle = 1 & cop = & ei = UTF-8 Auf der Grundlage Ihrer Erfahrungen mit dem REST-URLs in den vorhergehenden Artikeln besprochen, sollten Sie in der Lage sein, zu erraten, was die einzelnen Suchparameter zu tun. Bevor ich erkläre, was ich denke, die Suchparameter lassen, einen Blick auf die URL, die nach dem Klicken auf die zweite Seite Link (wird durch "2" gekennzeichnet an der Unterseite der Ergebnisse): http://search.yahoo.com/search?p=really+big+search & toggle = 1 & ei = UTF-8 & fr = FP-tab-web-t500 & b = 11 Von dieser URL, so scheint es, dass / search ist ein Root-URL von einer REST-Perspektive. So bedeutet dies, dass die Ausführung der URL / search würden alle Rückgabe von Suchergebnissen? Theoretisch ja, aber ich bezweifle es tatsächlich würde, denn dies würde bedeuten, wieder eine alphabetische Auflistung aller HTML-indexierte Seiten bei Yahoo!, Die vollständig aus einer Umsetzung Sicht nicht praktikabel. Ich glaube, Yahoo! ist mit einer REST-ful Ansatz, denn wenn Sie auf die Bilder auf den Link oben auf der Ergebnis-Seite, die folgende URL generiert wird: http://images.search.yahoo.com/search/images?p=really+big + search & toggle = 1 & ei = UTF-8 & fr = FP-tab-web-t500 & fr2 = tab-web Beachten Sie, dass die Bilder URL / search / images, was bedeutet, dass Bilder, die auf der Suche URL gehören, aber sie stellen eine spezifische Art der Suche . In einer REST Web-Service-Ansatz, stellt dies die ideale Strategie nennen. Beachten Sie auch, wie der Abfrage-Parameter für eine allgemeine und Bild-basierte Suche identisch sind. Dies beweist einmal mehr ein ausgereiftes REST Web Service. Die Parameter der URL sind eine Möglichkeit der Filterung der ungeheuren Menge von Suchergebnissen. Die erste Methode besteht darin, Filterung auf der Abfrage selbst, die von der p-Abfrage Parameter definiert wird. Dies ist eine sehr clevere Art der Definition einer Ergebnismenge, weil es bedeutet, dass mehrere Personen für den gleichen Bedingungen Benutzer wird die gleiche Ansicht zu sehen. Aus einer Perspektive suchen, Yahoo! unterscheidet nicht zwischen den Nutzern. Da mehrere Personen das gleiche Ergebnis, ein Verfahren zur Identifizierung, die Ergebnisse sehen können zurückgegeben werden muss, um identifiziert werden. Die b-Abfrage Parameter dient diesem Zweck, dass es bestimmt die Startposition der Suchergebnisse. Wenn Sie bezweifeln, dass Yahoo! hält eine server-seitige Ergebnis gesetzt, wird die b Suchparameter sollten Sie davon überzeugen. Die b-Abfrage Parameter ist ein numerischer Wert, der in der Tat sagt: "Bitte senden Sie den Links finden Sie auf der Liste Indizes 11, 12, 13, 14, 15, 16, 17, 18, 19 und 20 des Suchergebnisses festgelegt wirklich großen suchen. "Die Yahoo! Beispiel zeigt, dass ein wesentlicher Bestandteil der Präsentation großer Datenmengen ist eine Illusion zu schaffen. Die Illusion, in diesem Fall stellt eine Untermenge der Ergebnisse, mit dem Rest der vorgelegten Ergebnisse, wenn sie angefordert werden. Also, wenn eine SQL-Abfrage führt zu 64.000 Datensätze, ist die Illusion, zu den Top 100 oder so Ergebnisse zu präsentieren, während im Hintergrund der Vorbereitung noch eine Ladung von rund 100 Ergebnisse. Die folgende Liste zeigt die Attribute einer Situation, in der Sie sich bewerben würde die Techniken definiert in diesem Artikel: • Der Datensatz kann als unendlich angesehen werden. Auch wenn es theoretische Werte, die aus praktischer Sicht der Datensatz scheint unendlich. Zum Beispiel, jeder mathematischen Algorithmus, der eine Reihe von Daten, wie beispielsweise alle Quadrate der Zahlen von 1 bis 1 Mio. generiert, könnte als unendlich ausgelegt werden. Ein weiteres Beispiel ist eine Suchmaschine auf eine riesige Datenbank, die eine große Ergebnismenge, wenn die Datenbank abgefragt wird generiert verbunden. • Der Datensatz ist nicht verfügbar, zum Zeitpunkt des Antrags. In diesem Zusammenhang machen Sie eine Anfrage, dass eine Folge von Ereignissen auslöst. Da die Ereignisse einige Rechenzeit benötigen, sind die Ergebnisse nicht sofort verfügbar. Zum Beispiel, im Falle einer Suchmaschine Mashup, die Lieferung der Ergebnisse aus den einzelnen Suchmaschinen erfordert ein wenig Zeit. Ein weiteres Beispiel ist die Gewinn-und Verlustrechnung für ein Investment-Portfolio. • Die Daten werden einem einzigen Block aus vielen Elementen, und der Block ist als eine zusammenhängende Einheit von Daten betrachtet werden. SolutionDie Architektur für große oder langsam Datensätze erfordert eine Server-Komponente, die Multithreading oder multiprocesses unterstützt, und einer Client-Komponente, die eine Zwei-Kanal-Kommunikation Mechanismus Die Architektur umfasst, ist ein Beispiel für historischen Ticker Anwendung. Der Kunde hat zwei Wechselwirkungen: HTTP-POST und HTTP-GET auf die gleiche URL, / services / historischer / *. Auf technischer Ebene sind die beiden Wechselwirkungen zu trennen, aber sie arbeiten oft zusammen. Die POST-Interaktion wird verwendet, um Daten zu senden, und der GET-Interaktion wird verwendet, um Daten abzurufen. Technisch gesehen, bedeutet eine REST Web Service eine solche Wechselwirkung: eine Aufgabe, eine POST-Anfrage starten gesendet wird, und die Antworten für die Aufgabe abgerufen werden unter Verwendung eines GET. Zwei Kanäle werden so eingesetzt, dass der Client mehrere Antworten zu einer Aufgabe ausführen empfangen können. Diese Fähigkeit ist eine Notwendigkeit, wenn Sie arbeiten mit großen Datenmengen oder langsam. Sie können nicht ausgeführt werden, und warten Sie eine Aufgabe für die gesamte Antwort, auch wenn mit XMLHttpRequest im asynchronen Modus wollte nicht aufhören, dass der Browser funktioniert. Sie wollen Daten nur bruchstückhaft Grundlage zurückzuholen, weil Sie die Ergebnisse, sobald sie verfügbar sind, angezeigt werden soll. Auf der Server-Seite, zwei-Komponenten implementieren die Wechselwirkungen: TaskManager und ResultCache. TaskManager geht auf alle POST-Anforderungen und führt die entsprechende Aufgabe. Die einzelnen Tasks erzeugen dann ihre Ergebnisse und fügen Sie sie zu ResultCache. Wenn der Klient eine GET, die Daten aus ResultCache abgerufen. TaskManager ist nur zuständig für die Ausführung der Aufgaben und die Verwaltung der Verweis auf ResultCache. TaskManager ist nicht verantwortlich für die Kenntnis der Details der generierten Ergebnisse oder die Art der Aufgabe, die ausgeführt wird. Verwalten der Client Request / Response-ZyklusFür den Augenblick, wir ignorieren die URLs und der Server-Seite, und konzentrieren sich auf die Client-Seite. Wir können die erstaunlichsten URLs zu definieren und die interessantesten Server-Seite, aber wenn der Client-Seite Funktionen ineffizient, ist alles andere keine Rolle. Definieren, was der Kunde kann und was nicht geht ein langer Weg zur Festlegung des Server-URLs und serverseitigen Code. Lassen Sie uns zuerst einen Blick auf eine Zuordnung beispielsweise nach dem Vorbild der http://map.search.ch oder http://maps . google.com. Sie finden die Logik, um das Scrollen der Karte glatt zu machen, wie die Karte von einer Reihe von Stücken Bild ist 1. Der Kunde surft auf die URL und lädt die HTML-Seite, dass die Sicht-Anschluss enthält. 2. Die HTML-Seite sendet eine POST-fragen zu vier Stück Karte zu laden. 3. TaskManager beginnt eine Aufgabe, dass die gesuchte Karte Stück abruft. Die Aufgabe, fügt der Karte Stücke ResultCache. 4. Die HTML-Seite führt eine Schleife, die regelmäßig, wenn die angeforderte Karte Stücke müssen ResultCache hinzugefügt wurden, fragt er. Wenn die Stücke aufgenommen wurden, dann werden sie abgerufen und angezeigt werden. In diesem Augenblick gibt es eine Verbindung zu trennen, wie die Kennung der Karte Stück ist noch nicht definiert. Wenn die HTML-Seite geladen wird, welche Teile Karte geladen werden? Legen Sie die Standard? Und wenn Sie das Standardprofil zu laden, was genau ist Standard? Wenn die Karte wird geladen Stücke, müssen Sie zunächst feststellen, wie man eine Karte piece.Defining den Zwängen der Client Die Abbildung zeigt beispielsweise ermitteln, was Sie tun müssen, um große oder unendliche Datenmengen zu verwalten, auch wenn alle Anwendungen, die Arbeit mit großen oder unendlich Datensätze haben folgende gemeinsame Eigenschaften auf der Client-Seite: • Der Vergleich von Daten definiert werden können. Im Fall der Abbildung Anwendung bedeutet dies, Zuweisung koordiniert alle anzeigen Stücke. Sie wollen die Daten mit einem Hinweis vorangestellt werden, so dass der Kunde kann direkt auf die Daten über eine URL-Ansatz berechnet. Dies bedeutet nicht, dass die Daten zur Verfügung steht unter der URL, wie der Server-Seite nicht vielleicht noch, dass die Daten generiert. Die Referenzen können Zeitstempel, Koordinaten, oder ein Inkrementalzähler, aber sie müssen die Fähigkeit besitzen, um zu bestimmen, bevor die Daten geladen wird. • Der Kunde wird direkt auf den Hafen sehen und die Daten, die wahrscheinlich angesehen werden. Die Daten, die wahrscheinlich angesehen werden, ist der Look-Ahead-Daten, die vorgespannt. Der Algorithmus, um die Daten, die wahrscheinlich zu betrachten, zu bestimmen ist völlig abhängig von der Anwendung und die Benutzeroberfläche der Anwendung. Zum Beispiel haben die meisten Mapping Anwendungen einen Pfeil, um die Karte nach oben und unten von einer Karte Stück. Wenn ein Benutzer-Interface waren, um einen Pfeil genannte "Jump 100 Einheiten", dann die Auswahl, die wahrscheinlich ist, angesehen würden, sind die unmittelbaren als auch die "100 Einheiten Jump" Karte Stücke anbieten. Die Idee hinter den Daten, die wahrscheinlich zu betrachten ist, damit der Client-oder Server Vorspannung die Informationen, die die Iteration der Daten erscheinen lässt wie ein reibungslosen Ablauf. In unserem Fall bauen wir einen Börsenticker Anwendung zum Anzeigen. Der Kunde muss in der Lage, eine Liste der Börsenticker navigieren und dann einen Überblick über die Geschichte der Ticker. In der Schnappschüsse, die historischen Daten nicht dargestellt, da der Schwerpunkt auf der Navigations-und Daten-Manipulationen. Listennavigation macht oder bricht die Funktionalität oder die Performance der Kunden. Im Falle der Mapping-Applikation, Nutzern bei der Navigation mit der Maus auswählen und anzeigen Stücke ziehen. Im Falle des Tickers beispielsweise Nutzer navigieren Sie mit den Pfeiltasten bewegen Sie die Maus über einen Ticker. Unter keinen Umständen sollten Sie ein Listenfeld oder ein Kombinationsfeld für die Navigation diese Elemente nicht halten kann eine große Menge von Daten, so dass die Navigation mit ihnen kann eine unangenehme Erfahrung. Slashdot (www.slashdot.org) ist es gelungen, das Problem zu lösen, setzt der Daten wird zu groß, mit persönlichen Vorlieben Techniken. Etwas über Menschen wie Slashdot, ist die Tatsache, dass sie eine Geschichte lesen und dann nach ihrer Meinung zum Thema Art wie ein Artikel Verein für Internet-Freaks. Umstrittene Slashdot Geschichten können über 300 Buchungen Garner, von denen einige Müll, aber andere, die sind interessant. Slashdot war die erste Website, um erfolgreich basieren auf einer Technik namens metamoderation. Metamoderation ist, wenn die Leser ihre eigenen Schiedsrichter sind und feststellen, ob ein Beitrag ist interessant. Gut Buchungen, die lustig sind oder interessant haben einen höheren Rang als jene, die Unsinn sind. Mit ihren persönlichen Präferenzen, Leser können wählen, auf welcher Ebene sie wollen, um Nachrichten in anderen Worten zu lesen, können Sie wählen, um nur die interessantesten Beiträge, wenn sie, wie zu lesen. Es ist ein System, das funktioniert. Die Metadaten ist ein Index für die Navigation, die auf der HTML-Seite erstellt wird. Ein Artikel eingereicht von Sonja Lande Disclaimer:Unsere Website ist nicht verantwortlich für den Inhalt dieses Artikels. Webarticles ist eine kostenlose Informationsquelle. Wichtig: Dieser Artikel "Implementing Web Services für Groß-oder Slow-Data Sets" übersetzt wurde durch eine automatische Software. Wir fühlen uns leid für alle Rechtschreibfehler, die möglicherweise aufgetreten sind. Vielen Dank für Ihr Verständnis.
|
|||||
| Online: 378 users browsing the articles directory |
|
|