Attuazione dei servizi Web per grandi insiemi di dati o di SlowIon 'ambito di un Ajax e l'applicazione di riposo, servizi web che espongono grandi insiemi di dati o rallentare i set di dati meritano una speciale attenzione a causa del requisito che la soluzione risulta essere il più efficiente possibile. L'articolo copre i seguenti aspetti dell'attuazione del servizio AWeb che espone grandi insiemi di dati o rallentare insiemi di dati: • Comprendere il contesto di ciò che di dati di grandi dimensioni o set di applicazioni è lento • delineare l'architettura generale della soluzione • determinare come una domanda dovrebbero essere progettate in termini di codifica
Problema Si desidera creare servizi Web che espongono grandi insiemi di dati o di insiemi di dati che richiedono molto tempo per generare. Teoria Molti sviluppatori esperienza la necessità di mostrare un gran numero di record per gli utenti finali. La prima reazione della maggior parte degli sviluppatori a questo tema è: "No, non si può fare." Eppure, quando si guarda alla Google e Yahoo! motori di ricerca, si vede che si può fare. In questo articolo si propone di risolvere un problema specifico, come visualizzare 64.000 record nel browser AWeb. Si prega di notare che la soluzione di un grande insieme di dati o dati lento del set di servizi web è molto specializzata e non dovrebbe essere utilizzato come una soluzione generale. La complessità della soluzione rende impraticabile per l'utilizzo in ogni applicazione. I servizi Web che sono una sola richiesta e di risposta sono semplici e non richiedono la gestione di Stato o di callback. In una soluzione di questo articolo, lo stato e callback sono obbligatori. L'efficienza è uno dei requisiti di questa soluzione, ma bisogna ricordare che l'efficienza è relativo, e la soluzione sarà il più efficiente possibile per il contesto. Non è difficile per un motore di ricerca per cercare i suoi indici e ritorno 10 risultati di una serie di dati enorme. Come il 10 risultati vengono generati e restituiti come una singola pagina HTML, il secondo e il terzo lotto dei risultati vengono generati. Vorrei anche tentare di indovinare che Yahoo! genera una lista di risultati di 100 links trovati. Immagino che probabilmente è un set di risultati di 100 elementi, perché in fondo alla pagina ci sono 10 Link pagina dei risultati della ricerca. Moltiplicare 10 e 10, e si ottiene 100 links. Che cosa è molto interessante è il modo in Yahoo! consente di recuperare il set di risultati. Si consideri l'URL generato dalla query: http://search.yahoo.com/search?p=really+big+search & fr = FP-tab-web-T500 & toggle = 1 & cop = & ei = UTF-8 Sulla base della sua esperienza con gli URL REST discusso negli articoli precedenti, si dovrebbe essere in grado di indovinare che cosa i singoli parametri di query fare. Prima di spiegare quello che penso i parametri di query fare, guardiamo l'URL che compare dopo aver cliccato sul link seconda pagina (indicato da "2" nella parte inferiore dei risultati): http://search.yahoo.com/search?p=really+big+search & toggle = 1 & ei = UTF-8 & fr = FP-tab-web-t500 & b = 11 Da questo URL, sembra che la ricerca / è un URL come root da un punto di vista REST. Quindi questo non significa che l'esecuzione del URL / ricerca visualizza tutti i risultati della ricerca? In teoria, sì, ma dubito che in realtà sarebbe, perché questo significherebbe restituire un elenco alfabetico di tutte le pagine HTML indicizzate in Yahoo!, Che è del tutto impraticabile dal punto di vista di attuazione. Credo che Yahoo! utilizza un approccio REST-ful, perché se si fa clic sul link Immagini nella parte superiore della pagina dei risultati, l'URL seguente viene generato: http://images.search.yahoo.com/search/images?p=really+big + ricerca & toggle = 1 & ei = UTF-8 & fr = FP-tab-web-T500 & FR2 = tab-web noti che l'URL è Images / search / immagini, il che significa che le immagini appartengono alla URL di ricerca, ma rappresentano un tipo più specifico di ricerca . In un approccio REST servizio Web, questa rappresenta la strategia ideale di denominazione. Inoltre notare come i parametri di query per una ricerca generale e image-based "sono identici. Ciò dimostra ancora una volta una ben progettata REST Web service. I parametri della URL rappresentano un modo di filtrare la quantità enorme di risultati di ricerca. Il primo metodo consiste filtro sulla query stessa, che è definita dal parametro p query. Questo è un modo molto intelligente di definire un set di risultati, perché significa che le persone più ricerca per gli stessi termini si veda la stessa opinione. Da una prospettiva di ricerca, Yahoo! non fa distinzione tra gli utenti. Dal momento che più persone possono vedere gli stessi risultati, un modo di identificare quali risultati devono essere restituiti devono essere identificati. Il parametro di ricerca b serve a tal fine, nel senso che definisce l'indice di partenza dei risultati della ricerca. Se tu fossi certo che Yahoo! mantiene un server-side set di risultati, quindi il parametro di ricerca b deve convincere di questo. Il parametro di ricerca b è un valore numerico che in effetti dice: "Vi preghiamo di restituire i collegamenti disponibili presso gli indici lista 11, 12, 13, 14, 15, 16, 17, 18, 19, e 20 del risultato della ricerca di veramente grande di ricerca. "Il Yahoo! esempio dimostra che una componente chiave della presentazione di grandi insiemi di dati sta creando un'illusione. L'illusione in questo caso presenta un sottoinsieme dei risultati, con il resto dei risultati presentati, quando sono richieste. Quindi, se uno i risultati delle query SQL in 64.000 record, l'illusione è quello di presentare i primi 100 o giù di risultati, mentre sullo sfondo preparando un altro lotto di 100 o giù di risultati. L'elenco che segue presenta gli attributi di una situazione in cui si applicano le tecniche di cui al presente articolo: • Il set di dati potrebbe essere interpretato come infinito. Anche se ci sono limiti teorici, da un punto di vista pratico, la serie di dati sembra infinita. Ad esempio, un algoritmo matematico che genera una serie di dati, come tutte le piazze dei numeri da 1 a 1 milione, potrebbero essere interpretate come infinito. Un altro esempio è un motore di ricerca collegato a un enorme database che genera un risultato enorme set quando il database viene interrogato. • Il set di dati non è disponibile al momento della richiesta. In questo contesto, si effettua una richiesta che attiva una sequenza di eventi. Perché gli eventi richiedono un certo tempo di calcolo, i risultati non sono immediatamente disponibili. Ad esempio, nel caso di un mashup motore di ricerca, la consegna dei risultati dei motori di ricerca individuale richiede una piccola quantità di tempo. Un altro esempio è il conto profitti e perdite di calcolo per un portafoglio di investimenti. • I dati sono un unico blocco di molti elementi, e il blocco deve essere considerata come un unico pezzo contiguo di dati. SoluzioneL'architettura per i dati di grandi dimensioni o rallentare fissa richiede una componente server che supporta il multithreading o multiprocesses, e una componente client che include un meccanismo in due canale di comunicazione L'architettura è una domanda storica esempio ticker. Il cliente ha due interazioni: HTTP POST e HTTP GET allo stesso URL, / servizi / storico / *. A livello tecnico, le due interazioni sono separati, ma spesso lavorano insieme. L'interazione POST viene utilizzato per inviare i dati, e l'interazione GET è utilizzato per recuperare i dati. Tecnicamente, un servizio REST Web implica una tale interazione: per iniziare un compito, una richiesta POST viene inviato, e le risposte per l'attività vengono recuperati utilizzando un GET. Due canali vengono utilizzati in modo che il cliente può ricevere più di una risposta ad un compito di esecuzione. Questa capacità è una necessità quando si lavora con grandi insiemi di dati o lento. Non è possibile eseguire un compito e attendere la risposta completa, anche se usando XMLHttpRequest in modalità asincrona non interrompere il browser di funzionare. Si desidera recuperare i dati in modo frammentario, perché si desidera visualizzare i risultati non appena sono disponibili. Sul lato server, due componenti attuare le interazioni: TaskManager e ResultCache. TaskManager risponde a tutte le richieste POST ed esegue il compito appropriato. Le singole competenze genera quindi i loro risultati e aggiungerli al ResultCache. Quando il client esegue un GET, i dati da ResultCache viene recuperato. TaskManager è responsabile solo per l'esecuzione dei compiti di gestione e il riferimento alla ResultCache. TaskManager non è responsabile per conoscere i dettagli dei risultati generati o la natura del compito che viene eseguito. Gestire la richiesta del client / Response CyclePer il momento, ha scelto di ignorare gli URL e il lato server, e si concentrano sul lato client. Possiamo definire l'URL più stupefacente e il lato più interessante del server, ma se le funzioni in maniera inefficiente, non lato client, tutto il resto non importa. La definizione di ciò che il cliente può e non si può fare va un lungo cammino verso la definizione degli URL del server e il codice lato server. In primo luogo, diamo un'occhiata a un esempio di mappatura secondo le linee di http://map.search.ch o http://maps . google.com. Potrai vedere la logica di rendere lo scorrimento della mappa liscia, come la mappa è composto da un numero di pezzi di immagine 1. Il client naviga per l'URL e carica la pagina HTML che contiene la porta di vista. 2. La pagina HTML invia una richiesta POST per caricare quattro pezzi di mappa. 3. TaskManager inizia un compito che recupera i pezzi richiesti mappa. Il compito aggiunge i pezzi di mappa per ResultCache. 4. La pagina HTML esegue un ciclo periodico, che chiede se i pezzi richiesti mappa sono stati aggiunti alla ResultCache. Se i pezzi sono stati aggiunti, poi vengono recuperati e visualizzati. In questo momento, non vi è una certa incoerenza, come l'identificativo dei pezzi mappa non è stata definita. Quando il caricamento della pagina HTML, che mappa i pezzi vengono caricati? Non si carica il predefinito? E se fate caricare il default, che cosa è il default? Quando si carica i pezzi della mappa, è necessario innanzitutto determinare come identificare una mappa piece.Defining i vincoli del Cliente L'esempio di mappatura mostra cosa dovete fare per gestire grandi insiemi di dati o infinito, anche se tutte le applicazioni che lavorano con le grandi o infinito insiemi di dati sono i seguenti attributi comuni sul lato client: • Il riferimento di tutti i dati possono essere definiti. Nel caso di applicazione di mapping, questo significa assegnare coordinate a tutti i pezzi di mappa. Si desidera che i dati che devono essere preceduti da un punto di riferimento in modo che il cliente può saltare ai dati utilizzando un approccio URL calcolato. Questo non significa che i dati disponibili è l'URL, come il lato server non può ancora hanno generato i dati. I riferimenti possono essere timestamp, coordinate, o un contatore incrementale, ma devono possedere la capacità di essere determinato prima il caricamento dei dati. • Il cliente sarà direttamente riferimento alla porta dati e visualizzare i dati che probabilmente sarà letta. I dati che saranno probabilmente letta è il look-ahead dati che è precaricato. L'algoritmo per determinare i dati che probabilmente sarà letta dipende completamente l'applicazione e l'interfaccia utente dell'applicazione. Per esempio, le applicazioni di mappatura la maggior parte hanno una freccia per spostare la mappa su e giù da un pezzo la mappa. Se un utente dovesse offrire una freccia chiama "Jump 100 Unità", quindi la scelta che è probabilmente sarà Visto che comprendono l'immediato così come il Jump "100 Unità" pezzi di mappa. L'idea alla base dei dati che è destinata probabilmente ad essere considerato è quello di lasciare che il client o server precarico le informazioni, il che rende l'iterazione dei dati sembrare un processo regolare. Nel nostro caso, stiamo costruendo una domanda di quotazione di borsa di visualizzazione. Il cliente avrà la capacità di navigare un elenco di titoli di borsa e quindi visualizzare la cronologia di quelle righe. Nel istantanee, i dati storici non è illustrato, perché il focus è sulla navigazione e la manipolazione dei dati. Spostamento Elenco fa o si rompe la funzionalità o le prestazioni del client. Nel caso di applicazione di mapping, gli utenti a navigare utilizzando il mouse per selezionare e trascinare pezzi di mappa. Nel caso del ticker esempio, gli utenti a navigare usando le frecce spostando il mouse su un ticker. In nessun caso si dovrebbe utilizzare una casella di riepilogo o una casella combinata per la navigazione con questi elementi non può contenere una grande quantità di dati, in modo da navigare con loro può essere un'esperienza spiacevole. Slashdot (www.slashdot.org) è riuscito a risolvere il problema di set di dati è troppo grande utilizzando tecniche di preferenze personali. Persone Qualcosa del genere su Slashdot è il fatto che si può leggere una storia e poi dopo il loro parere sul tema della specie come un club articolo per geek Internet. Controverse storie Slashdot può raccogliere più di 300 messaggi, alcuni dei quali sono spazzatura, ma di altri che sono interessanti. Slashdot è stato il primo sito Web di impiegare con successo una tecnica chiamata metamoderation. Metamoderation è quando i lettori sono i loro propri arbitri e determinare se un intervento è interessante. Buona messaggi che sono divertente o interessante avere una classifica più elevati di quelli che sono sciocchezze. Utilizzando le loro preferenze personali, i lettori possono scegliere a quale livello che vogliono leggere i messaggi in altre parole, essi possono scegliere di leggere solo i messaggi più interessanti, se a loro piace. Si tratta di un sistema che funziona. I metadati è un indice per la navigazione che viene creato nella pagina HTML. un articolo presentato da Sonja Lande Disclaimer:Il nostro sito non è responsabile per il contenuto di questo articolo. Webarticles è una risorsa gratuita di informazioni. Importante: Questo articolo è "alla realizzazione di servizi Web per grandi o Slow Data Set" è stato tradotto da un software automatico. Ci dispiace per eventuali errori di ortografia che possono essersi verificati. Grazie per la vostra comprensione.
|
|||||
| Online: 439 users browsing the articles directory |
|
|