La implementación de servicios Web para grandes conjuntos de datos o lento

In el contexto de una aplicación AJAX y REST, servicios web que exponen a grandes conjuntos de datos o lento conjuntos de datos merecen una atención especial debido a la exigencia de que la solución resultante sea lo más eficiente posible. Este artículo cubre los siguientes aspectos de la aplicación del servicio AWeb que expone grandes conjuntos de datos o lento conjuntos de datos:

• Comprender el contexto de lo que es un grande de datos o conjunto de aplicaciones es lento

• Esquema de la estructura general de la solución de

• Determinar cómo una aplicación debe ser diseñada en términos de codificación de

  

Problema ¿Quieres crear servicios web que exponen a grandes conjuntos de datos o conjuntos de datos que toman mucho tiempo en generarse.

Teoría Muchos desarrolladores experimentar la necesidad de mostrar un gran número de registros a los usuarios finales. La primera reacción de la mayoría de los desarrolladores a este tema es: "No, no se puede hacer." Sin embargo, cuando se mira a la de Google y Yahoo! los motores de búsqueda, verá que se puede hacer. En este artículo se propone resolver un problema concreto, cómo mostrar 64.000 registros en el navegador de AWeb. Tenga en cuenta que la solución para un amplio conjunto de datos o datos lento conjunto de servicios Web es muy especializado y no debe utilizarse como una solución general. La complejidad añadida de la solución hace que sea imposible para el uso en cada aplicación. Servicios web que son una sola petición y la respuesta son simples y no requieren de la gestión de Estado o de las devoluciones de llamada. En la solución de este artículo, se requiere del Estado y las devoluciones de llamada. La eficiencia es uno de los requisitos de esta solución, pero recuerda que la eficiencia es relativa, y la solución será tan eficiente como sea posible para el contexto.

Como ustedes saben, en cualquier motor de búsqueda, introduzca un término o frase en un cuadro de texto, pulse el botón de búsqueda y las páginas HTML se devuelven pertinentes para el término o frase escrita pulg Si el motor de búsqueda presenta los resultados de utilidad no es el punto de esta solución. Lo relevante es el hecho de que se ha ejecutado una búsqueda que resultó en una página HTML que muestra 10 resultados por página de los cerca de 175.000.000 resultados disponibles. El resultado de la búsqueda de la página HTML parece bueno, y la búsqueda en sólo 0,13 segundos. La velocidad de búsqueda debería sorprender a los usuarios, pero tienden a ser cínicos. Estoy seguro de que los 0,13 segundos no es una mentira, pero la pregunta es, ¿qué significa la medida de 0,13 segundos? Es el 0,13 segundos una medida de haber encontrado los términos de búsqueda en 175.000.000 páginas? Lo dudo, porque si este fuera el caso, significaría que cada página se encuentran en 0.00000000074286 segundos, o que cada página se encuentra en dos ciclos de reloj de 3 GHz CPU. Estas estadísticas deberían hacer a nadie cuidado de los resultados, incluso si se tratara de procesos paralelos. Así que si las estadísticas son muy aproximadas a punto de ser irrelevante, lo que realmente está pasando? El motor de búsqueda es la solución del problema de grandes volúmenes de datos o lento establece mediante una ilusión. La ilusión es el motor de búsqueda que está presentando la información de una manera rápida, a pesar de que está viendo sólo una tajada muy pequeña de la información total.

No es difícil para un motor de búsqueda para buscar sus índices y retorno 10 resultados de un amplio conjunto de datos. En los 10 los resultados se generan y se devuelve como una sola página HTML, los lotes de segunda y tercera de los resultados se están generando. Incluso me atrevería a decir que Yahoo! genera una lista de resultados de 100 enlaces encontrados. Creo que es probablemente un conjunto de resultados de 100 elementos, porque en la parte inferior de la página hay 10 enlaces de la página de resultados de búsqueda. Multiplique 10 y 10, y usted consigue 100 enlaces. Lo que es muy interesante es cómo Yahoo! le permite recuperar el conjunto de resultados. Tenga en cuenta la URL generada por la consulta:

http://search.yahoo.com/search?p=really+big+search & fr = FP-tab-web-t500 & toggle = 1 & cop = & ei = UTF-8

Basado en su experiencia con los URLs REST discutido en los artículos anteriores, usted debería ser capaz de adivinar lo que los parámetros de consulta individual hacer. Antes de explicar lo que creo que los parámetros de consulta hacer, echemos un vistazo a la URL que aparece tras hacer clic en el enlace de la segunda página (indicado por "2" en la parte inferior de los resultados):

http://search.yahoo.com/search?p=really+big+search & toggle = 1 & ei = UTF-8 & fr = FP-tab-web-t500 & b = 11

Desde esta dirección, parece que / de búsqueda es un URL raíz de una perspectiva de REST. ¿Quiere decir entonces que la ejecución de la dirección / búsqueda de todos los resultados de búsqueda? En teoría, sí, pero lo dudo realmente, porque esto significaría regresar un listado alfabético de todas las páginas HTML indexadas en Yahoo!, Que es totalmente inviable desde una perspectiva de aplicación. Creo que Yahoo! está usando un enfoque REST-ful, porque se genera si hace clic en el enlace de Imágenes en la parte superior de la página de resultados, el siguiente URL: http://images.search.yahoo.com/search/images?p=really+big + Search & toggle = 1 & ei = UTF-8 & fr = FP-tab-web-t500 & tab = FR2-Aviso web que la dirección de imágenes es / search / images, lo que significa que las imágenes pertenecen a la dirección de búsqueda, pero que representan un tipo más específico de la búsqueda . En el enfoque de un servicio Web REST, esto representa la estrategia de nombres ideal. También cuenta de cómo los parámetros de consulta para una búsqueda basada en general y de la imagen-son idénticos. Esto ilustra una vez más un bien diseñado RESTO servicio Web. Los parámetros de la dirección representan una forma de filtrar la enorme cantidad de resultados de búsqueda. El primer método consiste en el filtrado en la propia consulta, que es definido por el parámetro de consulta p. Esta es una forma muy inteligente de la definición de un conjunto de resultados, ya que significa que varias personas en busca de los mismos términos que verá la misma opinión. Desde una perspectiva de búsqueda, Yahoo! no distingue entre los usuarios.

Dado que varias personas pueden ver los mismos resultados, una forma de identificar los resultados que se deben devolver debe ser identificado. El parámetro de consulta b sirve a ese propósito en el que define el índice de inicio de los resultados de búsqueda. Si se duda de que Yahoo! mantiene un servidor conjunto de resultados adversos, entonces el parámetro de consulta B debe convencerse de ello. El parámetro de consulta B es un valor numérico que, en efecto, dice, "Por favor, devuelva los enlaces disponibles en la lista de índices 11, 12, 13, 14, 15, 16, 17, 18, 19 y 20 de la serie de resultados de búsqueda realmente grande la búsqueda ". La Yahoo! ejemplo ilustra que un componente clave para la presentación de grandes conjuntos de datos es la creación de una ilusión. La ilusión en este caso es la presentación de un subconjunto de los resultados, con el resto de los resultados que se presentan cuando se solicitan. Así que si un resultado de la consulta SQL de 64.000 registros, la ilusión es presentar los primeros 100 o lo que los resultados, mientras que en el fondo preparando otro lote de 100 o más resultados. La siguiente lista presenta los atributos de una situación en la que se aplicaría la técnicas definidas en este artículo:

• El conjunto de datos podría ser interpretado como infinito. A pesar de que hay límites teóricos, desde una perspectiva práctica el conjunto de datos parece infinito. Por ejemplo, cualquier algoritmo matemático que genera una serie de datos, como todos los cuadrados de los números 1 a 1 millón, podría interpretarse como infinito. Otro ejemplo es un motor de búsqueda vinculado a una enorme base de datos que genera un resultado enorme juego cuando se consulta la base de datos.

• El conjunto de datos no está disponible en el momento de la solicitud. En este contexto, se hace una solicitud que activa una secuencia de eventos. Debido a los acontecimientos requieren de algún tiempo de computación, los resultados no están disponibles de inmediato. Por ejemplo, en el caso de un mashup de motores de búsqueda, la entrega de los resultados de los motores de búsqueda individuales requiere una pequeña cantidad de tiempo. Otro ejemplo es el beneficio y el cálculo de la pérdida de una cartera de inversiones.

• Los datos de un único bloque de muchos elementos, y el bloque debe ser considerado como una parte contigua de datos único. SoluciónLa arquitectura de datos de gran tamaño o lento conjuntos requiere un componente de servidor que soporta multihilo o multiprocesses, y un componente de cliente que incluye un mecanismo de doble canal de comunicación de la arquitectura es una aplicación de ejemplo histórico de cotización. El cliente tiene dos interacciones: HTTP POST y HTTP GET a la misma URL, / servicios / histórica / *. A nivel técnico, las dos interacciones son independientes, pero que a menudo trabajan juntos. La interacción POST se utiliza para enviar datos, la interacción y el AEC se utiliza para recuperar los datos. Técnicamente, un servicio Web REST implica dicha interacción: para iniciar una tarea, una solicitud POST se envía, y las respuestas de la tarea que se recuperan mediante un GET.

Dos canales se utilizan para que el cliente puede recibir múltiples respuestas a una tarea de ejecución. Esta capacidad es una necesidad cuando se trabaja con grandes conjuntos de datos o lenta. Usted no puede ejecutar una tarea y esperar la respuesta completa, aunque utilizando XMLHttpRequest en modo asíncrono no acabaría con el navegador de funcionamiento. Desea recuperar los datos de una manera fragmentada, ya que desea mostrar los resultados tan pronto como estén disponibles. Por el lado del servidor, dos componentes de la aplicación de las interacciones: TaskManager y ResultCache. TaskManager responde a todas las peticiones POST y ejecuta la tarea adecuada. Las tareas individuales a continuación, generar sus resultados y añadirlos a ResultCache. Cuando el cliente realiza un GET, los datos de ResultCache se recupera. TaskManager sólo es responsable de la ejecución de las tareas y la gestión de la referencia a ResultCache. TaskManager no es responsable de conocer los detalles de los resultados generados o la naturaleza de la tarea que se ejecuta.

Gestión de la solicitud de cliente / respuesta del cicloPor el momento, vamos a ignorar la URL y el lado del servidor, y centrarse en el lado del cliente. Podemos definir el URL más sorprendente y el lado del servidor más interesantes, pero si las funciones del lado del cliente, no de manera ineficiente, todo lo demás no importa. La definición de lo que el cliente puede o no puede hacer va un largo camino hacia la definición de las URL del servidor y el código de servidor. En primer lugar, veamos un ejemplo de la cartografía a lo largo de las líneas de http://map.search.ch o http://maps . google.com. Verá la lógica de hacer el desplazamiento de la hoja lisa, ya que el mapa se compone de una serie de piezas de la imagen

1. El cliente se encuentre navegando a la dirección URL y carga la página HTML que contiene el puerto de vista.

2. La página HTML que envía un post pidiendo a cargar cuatro piezas del mapa.

3. TaskManager comienza una tarea que recupera las piezas mapa solicitado. La tarea que añade las piezas de mapa para ResultCache.

4. La página HTML se ejecuta un bucle de periódicos que se le pregunta si las piezas mapa han sido añadidas a ResultCache. Si las piezas se han añadido, a continuación, se recupera y se muestra. En este momento, hay una desconexión, como el identificador de las piezas del mapa no ha sido definida. Cuando se carga la página HTML, mapa de las piezas que se cargan? No se carga por defecto? Y si se cargan por defecto, ¿qué es exactamente es el valor por defecto? Al cargar las piezas del mapa, es necesario primero determinar la forma de identificar un mapa piece.Defining las limitaciones del cliente En el ejemplo de la cartografía muestra lo que hay que hacer para manejar grandes conjuntos de datos o infinito, si bien todas las aplicaciones que trabajan con grandes o infinitas los conjuntos de datos tienen los atributos comunes siguientes en el cliente:

• La referencia de todos los datos pueden ser definidos. En el caso de la aplicación de mapas, esto significa asignar coordenadas de todas las piezas del mapa. Usted desea que los datos deben ir precedidos por una referencia para que el cliente puede ir directamente a los datos usando un enfoque de dirección calculada. Esto no significa que los datos disponibles en la URL, como del lado del servidor tal vez aún no han generado los datos. Las referencias pueden ser marcas de hora, coordenadas, o un contador incremental, pero deben poseer la capacidad de determinar antes de cargar los datos.

• El cliente se haga referencia directamente a la vista de datos del puerto y los datos que probablemente será visto. Los datos que probablemente será vista es el look-ahead datos que son cargados. El algoritmo para determinar los datos que probablemente va a ser visto es completamente dependiente de la aplicación y la interfaz de usuario de la aplicación. Por ejemplo, la mayoría de aplicaciones de mapeo tiene una flecha para mover el mapa hacia arriba y hacia abajo por una pieza del mapa. Si una interfaz de usuario se ofrece una flecha llamado "salto de 100 unidades", luego la selección que probablemente va a ser visto incluiría la inmediata, así como el "salto de 100 unidades de" trozos de mapa. La idea detrás de los datos que probablemente va a ser visto es dejar que el cliente o servidor de la precarga de la información, lo que hace que la iteración de los datos, como un proceso sin complicaciones.

En nuestro caso, estamos construyendo una solicitud de cotización de valores de visualización. El cliente tendrá la capacidad de navegar por una lista de símbolos de cotización y luego ver el historial de los teletipos. En las instantáneas, los datos históricos no se muestra, ya que la atención se centra en la navegación y la manipulación de datos. Lista de navegación hace o deshace la funcionalidad o desempeño del cliente. En el caso de la aplicación de mapas, los usuarios navegar usando el ratón para seleccionar y arrastrar las piezas del mapa. En el caso del ejemplo de cotización, los usuarios navegar usando las flechas moviendo el ratón sobre un ticker. Bajo ninguna circunstancia debe utilizar un cuadro de lista o un cuadro combinado para la navegación de estos elementos no pueden contener una gran cantidad de datos, de modo de navegación con ellos puede ser una experiencia desagradable.

Slashdot (www.slashdot.org) ha logrado resolver el problema de los conjuntos de datos son demasiado grandes utilizando las técnicas de preferencia personal. Algo así como sobre las personas Slashdot es el hecho de que pueden leer un cuento y luego publicar su opinión sobre el tema de la clase como un club de artículo para los geeks de Internet. Controversial historias Slashdot pueden reunir más de 300 publicaciones, algunas de las cuales son de basura, pero otros que son interesantes.

Slashdot fue el primer sitio Web emplear con éxito una técnica llamada metamoderation. Metamoderation es cuando los lectores son sus propios árbitros y determinar si un anuncio es interesante. Anuncios Buena Nueva de que son divertidas o interesantes tienen una jerarquía superior a las que son tonterías. Usando sus preferencias personales, los lectores pueden elegir a qué nivel quieren leer mensajes en otras palabras, se puede seleccionar sólo leer los mensajes más interesantes si les gusta. Es un sistema que funciona. Los metadatos es un índice para la navegación que se crea en la página HTML.

un artículo presentado por Sonja Lande


Descargo de responsabilidad:Nuestro sitio web no es responsable por el contenido de este artículo. Webarticles es un recurso de información gratuito.
Importante: En este artículo "Implementación de Web Services para grandes conjuntos de datos o lento", fue traducida por un software automático. Sentimos pena por los errores de ortografía que pueda haber ocurrido. Gracias por su comprensión.


Online: 291 users browsing the articles directory