gvSig y GeoServer: Rendimiento óptimo utilizando GML binario Gabriel Roldán
Agradecimientos - Gabriel Carrión, CIT - Luis Sevilla - Miguel Montesinos, Prodevelop - Instituto Geog. Nacional - OpenGeo
Overview - Introducción - Librería BXML - Integración con gvSig - Evaluación de rendimiento en gvSIG - Integración con GeoServer - Evaluación de rendimiento en GeoServer - Conclusiones
Introducción Intercambio de geodatos en una IDE - Web Feature Service: interoperabilidad a nivel de servicios para el intercambio de geodatos - Geography Markup Language: interoperabilidad a nivel de datos - GML Binary Encoding: Eficiencia para todos
GML Binary Encoding - Codificación binaria para documentos GML Orientada a la comunicación entre máquinas - Aplicación a GML de BXML Almacenamiento binario de coordenadas - + Eficiencia Para el servidor, red y cliente
Overview - Introducción - Librería BXML - Integración con gvSig - Evaluación de rendimiento en gvSIG - Integración con GeoServer - Evaluación de rendimiento en GeoServer - Conclusiones
Librería BXML - Binary Extensible Markup Language (BXML) Encoding Specification OGC Best Practices Document - CWXML Implementación de referencia en lenguaje C. CubeWerx. LGPL. - gvSIG BXML: API e implementación en lenguaje Java2. Conselleria de Infraestructuras y Transporte, Valencia. GPL.
gvSIG Software Libre GeoServer Software Libre gvSIG libGPE Software Libre gvSIG BXML Software Libre
Overview - Introducción - Librería BXML - Integración con gvSig - Evaluación de rendimiento en gvSIG - Integración con GeoServer - Evaluación de rendimiento en GeoServer - Conclusiones
- VecrorialFileDriver - GML y Binary GML Streaming GML Driver
- Utiliza (y crea) un índice espacial Streaming GML Driver
- Permite renderizado progresivo Streaming GML Driver
- Y acceso aleatorio (igual que Shapefile) Streaming GML Driver
- Con un uso eficiente de memoria Streaming GML Driver Memory GML Driver
Streaming GML Driver - También se puede exportar a Binary GML Desde el mismo menu que para GML
Streaming GML Driver - Simplemente seleccionando el formato
Streaming GML Driver - Y esperando... (poco :)
Streaming GML Driver On the dark side... - Implementa acceso a geometrías, falta acceso a atributos. Work in progress...
Cliente WFS + Binary GML 1- Conexión 2- Selección de capa
Cliente WFS + Binary GML 3- Negociación de formato 4- Enjoy
Cliente WFS + Binary GML On the dark side... - Falta integración ¨streaming¨ con el cliente WFS. Actualmente utiliza el Driver clásico de GPE, que carga todo en memoria
Overview - Introducción - Librería BXML - Integración con gvSig - Evaluación de rendimiento en gvSIG - Integración con GeoServer - Evaluación de rendimiento en GeoServer - Conclusiones
¿Qué tan eficiente es BXML? comparado con el más rápido: SHP, y el más lento: GML - Banco de pruebas: -Hardware: - Datos : Fuente:
Qué tan eficiente es BXML? En tamaño... (*) Para Shapefile se considera.shp +.dbf, GML y BGML contienen las geometrías y los atributos alfanuméricos en el mismo archivo
Qué tan eficiente es BXML? En rendimiento...
Qué tan eficiente es BXML? O en otras palabras, face to face... Shapefile GML Binary GML BXML es un poquito más lento, o un poquito más rápido que ShapeFile, depende el caso. Y mucho más rápido que GML textual
Overview - Introducción - Librería BXML - Integración con gvSig - Evaluación de rendimiento en gvSIG - Integración con GeoServer - Evaluación de rendimiento en GeoServer - Conclusiones
- Implementación de referencia WFS 1.0 y 1.1 / WCS 1.1. WMS conforme GPL, construido por la comunidad. Empresas, organizaciones sin fines de lucro, desarrolladores independientes, USUARIOS - Estable, robusto, extensible
- org.gvsig.bxml.geoserver: implementa el punto de extensión WFSOutputFormat - Simplemente colocar los.jar de bxml en el classpath
Y la extensión estará disponible text/xml; subtype=gml/3.1.1 text/x-bxml; subtype=gml/3.1.1 text/x-bxml; subtype=gml/3.1.1 GML2 GML2-GZIP SHAPE-ZIP csv json text/xml; subtype=gml/2.1.2
La diferencia la marca el tipo MIME text/xml; subtype=gml/3.1.1 &outputFormat=text/xml; subtype=gml/ Aflu Algeria place Aflu text/x-bxml; subtype=gml/3.1.1 &outputFormat=text/x-bxml; subtype=gml/ d 4c 00 ff 0d 0a |.BXML.ÿ | d e 30 ff |UTF-8.1.0ÿ.0..c| a 67 6e f 70 6f 70 2e |it:gnis_pop.shp.| d 6c 6e fa |.0..xmlns...ú.ht| a 2f 2f e e 6f |tp:// f b 78 6d 6c 6e 73 3a 78 |rg/cit0..xmlns:x|.....
Overview - Introducción - Librería BXML - Integración con gvSig - Evaluación de rendimiento en gvSIG - Integración con GeoServer - Evaluación de rendimiento en GeoServer - Conclusiones
Rendimiento - Servir Binary GML es entre 5.6 y 15 veces más rápido - La mayor diferencia se nota con la codificación binaria de las geometrías. Mientras mayores las geometrías, mejor el rendimiento.
Tasa de transferencia -La tasa de transferencia se incrementa notablemente, reduciendo el ancho de banda utilizado Por ej, 40 MB/s en lugar de 4,4 MB/s para, una mejora de 8x - O lo que es lo mismo, 20 a 30 mil Features por segundo en lugar de 2300 a
Escalabilidad - Lo que redunda en una multiplicación por 10, 12, o más de la capacidad del servidor para atender peticiones simultáneas.
Overview - Introducción - Librería BXML - Integración con gvSig - Evaluación de rendimiento en gvSIG - Integración con GeoServer - Evaluación de rendimiento en GeoServer - Conclusiones
Solución completa - La librería gvSIG BXML ofrece a GeoServer una mejora de ~6x a ~15x al servir la información - Una mejora a gvSIG de ~5x a ~6x en el parseo inicial de Features - El uso de GML Binario como formato de intercambio aporta una mejora de rendimiento de entre ~6x y ~10x - Sin sacrificar la interoperabilidad, el uso de estándares abiertos, etc - Y el uso de índices espaciales sobre GML Binario mejora el rendimiento en hasta 200x (por ej., la diferencia entre esperar menos de 1 segundo, o 3 minutos para renderizar un mapa)
BXML es... - Una realidad! - Un estándar, o recomendación, del OGC - Una API para Java, y una implementación de calidad, probada con la implementación de referencia en C para asegurar su correctitud. - Para el SIG de escritorio, una excelente alternativa abierta al formato de archivo ¨estándar de facto¨, y una solución al redimiento como cliente IDE - Para el Servidor, una forma de incrementar notablemente la escalabilidad sin sacrificar la interoperabilidad - Para la Comunidad, una oportunidad de potenciar la IDEs, los esquemas de datos comunitarios, y la comunicación entre procesos finalmente con un rendimiento aceptable.
Si te quedaste pensando... Ok, una mejora de 10 veces en rendimiento no parece tan impresionante... Veamoslo de esta forma, ¿qué resulta más conveniente?: multiplicar por diez el número de servidores, o instalar una librería que es Software Libre. Gratis... y bonita.
MUCHAS GRACIAS! Gabriel Roldán ¿Preguntas?