gvSig y GeoServer: Rendimiento óptimo utilizando GML binario
Luis W. Sevilla Gabriel Roldán
20090930
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
Web Feature Service: interoperabilidad a nivel de servicios
Geography Markup Language: interoperabilidad a nivel de datos
GML Binary Encoding: la pieza que faltaba
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<http://www.gvsig.org>
Software Libre
GeoServer<http://geoserver.org>
Software Libre
gvSIG libGPE<https://forge.osor.eu/projects/gvsiggpe>
Software Libre
gvSIG BXML<https://forge.osor.eu/projects/gvsigdesktop>
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
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 GML1 Conexión 2 Selección de capa
Cliente WFS + Binary GML3 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 :
Tipo # de Features Nombre
~126K GNIS_POP
~105K MAJOR_ROADS
1.000.000 WATER_POLYGON
1.000.000 WATER_SHORELINE
Fuente: <http://sigma.openplans.org:8080/geoserver/wfs?request=GetCapabilities>
Qué tan eficiente es BXML?En tamaño...
GNIS_POP MAJOR_ROADS WATER_POLYGON WATER_SHORELINE
0
500
1000
1500
2000
Datos de pruebaComparación de tamaños en los diferentes formatos
SHP (*)
GML
Binary GML
Conjunto de datos/Formato
Tam
a
ñ o po
r for
mat
o (M
B)
(*) Para Shapefile se considera .shp + .dbf, GML y BGML contienen las geometrías y los atributos alfanuméricos en el mismo archivo
Conjunto de datos SHP (*) GML Binary GML
GNIS_POP 96.4 MB 35 MB 11 MB
MAJOR_ROADS 194 MB 208 MB 142 MB
WATER_POLYGON 793 MB 928 MB 531 MB
WATER_SHORELINE 1.8 GB 701 MB 369 MB
Qué tan eficiente es BXML?En rendimiento...
99K 36K 13K 6K 2.8K 800 185
0
5000
10000
15000
20000
25000
MAJOR_ROADS a diferentes niveles de zoom
SHP
Binary GML
GML
Nro. de Features renderizadas a diferentes escalas
Tiem
po d
e re
nder
izad
o (m
s)
24.6K 9K 2.35K 640 280 153 101
0
500
1000
1500
2000
2500
3000
3500
GNIS_POP a diferentes niveles de zoom
SHP
Binary GML
GML
Nro. de Features renderizadas a diferentes escalas
Tiem
po d
e re
nder
izad
o (m
s)
964K 381K 283K 185K 106K 41K 12K
0
10000
20000
30000
40000
50000
60000
70000
WATER_SHORELINE a diferentes niveles de zoom
SHP
Binary GML
GML
Nro. de Features renderizadas a diferentes escalas
Tiem
po d
e re
nder
izad
o (m
s)
976K 536K 257K 166K 94K 36K 10K
0
20000
40000
60000
80000
100000
WATER_POLYGON a diferentes niveles de zoom
SHP
Binary GML
GML
Nro. de Features renderizadas a diferentes escalas
Tiem
po d
e re
nder
izad
o (m
s)
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 1.1.1 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
http://..../geoserver/wfs?request=GetCapabilities<ows:Parameter name="outputFormat"> <ows:Value>text/xml; subtype=gml/3.1.1</ows:Value>
<ows:Value>text/x-bxml; subtype=gml/3.1.1text/x-bxml; subtype=gml/3.1.1</ows:Value> <ows:Value>GML2</ows:Value> <ows:Value>GML2-GZIP</ows:Value> <ows:Value>SHAPE-ZIP</ows:Value> <ows:Value>csv</ows:Value> <ows:Value>json</ows:Value> <ows:Value>text/xml; subtype=gml/2.1.2</ows:Value></ows:Parameter>
La diferencia la marca el tipo MIMEhttp://..../geoserver/wfs?request=GetFeatrue&featrueType=sigma:gnis_pop&outputFormat=text/xml; subtype=gml/3.1.1text/xml; subtype=gml/3.1.1<wfs:FeatureCollection numberOfFeatures="126799" xsi:schemaLocation="...." xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" xmlns:sigma="http://sigma.openplans.org/data" xmlns:wfs="http://www.opengis.net/wfs"> <gml:featureMembers> <sigma:gnis_pop gml:id="gnis_pop.1"> <gml:name>Aflu</gml:name> <sigma:the_geom> <gml:Point srsName="urn:x-ogc:def:crs:EPSG:4326"> <gml:pos>34.12 2.09</gml:pos> </gml:Point> </sigma:the_geom> <sigma:population>84683</sigma:population> <sigma:country>Algeria</sigma:country> <sigma:type>place</sigma:type> <sigma:name>Aflu</sigma:name> </sigma:gnis_pop>....
http://..../geoserver/wfs?request=GetFeatrue&featrueType=sigma:gnis_pop&outputFormat=text/x-bxml; subtype=gml/3.1.1text/x-bxml; subtype=gml/3.1.100000000 01 42 58 4d 4c 00 ff 0d 0a 00 00 08 03 00 00 05 |.BXML.ÿ.........|00000000 01 42 58 4d 4c 00 ff 0d 0a 00 00 08 03 00 00 05 |.BXML.ÿ.........|00000010 55 54 46 2d 38 20 03 31 2e 30 ff 00 30 01 10 63 |UTF-8 .1.0ÿ.0..c|00000010 55 54 46 2d 38 20 03 31 2e 30 ff 00 30 01 10 63 |UTF-8 .1.0ÿ.0..c|00000020 69 74 3a 67 6e 69 73 5f 70 6f 70 2e 73 68 70 03 |it:gnis_pop.shp.|00000020 69 74 3a 67 6e 69 73 5f 70 6f 70 2e 73 68 70 03 |it:gnis_pop.shp.|00000030 00 30 01 05 78 6d 6c 6e 73 05 01 10 fa 18 68 74 |.0..xmlns...ú.ht|00000030 00 30 01 05 78 6d 6c 6e 73 05 01 10 fa 18 68 74 |.0..xmlns...ú.ht|00000040 74 70 3a 2f 2f 77 77 77 2e 67 76 73 69 67 2e 6f |tp://www.gvsig.o|00000040 74 70 3a 2f 2f 77 77 77 2e 67 76 73 69 67 2e 6f |tp://www.gvsig.o|00000050 72 67 2f 63 69 74 30 01 0b 78 6d 6c 6e 73 3a 78 |rg/cit0..xmlns:x|00000050 72 67 2f 63 69 74 30 01 0b 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
GNIS_POP MAJOR_ROADS WATER_POLYGON WATER_SHORELINE
0,00
50,00
100,00
150,00
200,00
250,00
300,00
350,00
400,00
Tiempo de respuestaGeoServer GML vs BinaryGML
GML
Binary GML
GML (solo geom)
Binary GML (solo geom)
FeatureType/Formato
T. p
or c
onsu
lta (s
)
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
GNIS_POPMAJOR_ROADS
WATER_POLYGONWATER_SHORELINE
0,00
10.000,00
20.000,00
30.000,00
40.000,00
50.000,00
60.000,00
70.000,00
80.000,00
90.000,00
100.000,00
Tasa de transferencia en Features por segundoGeoServer GML vs BinaryGML
GML
Binary GML
GML (solo geom)
Binary GML (solo geom)
FeatureType/Formato
Feat
ures
/sGNIS_POP
MAJOR_ROADSWATER_POLYGON
WATER_SHORELINE
0,00
5,00
10,00
15,00
20,00
25,00
30,00
35,00
40,00
Tasa de transferencia (Throughput)GeoServer GML vs BinaryGML
GML
Binary GML
GML (solo geom)
Binary GML (solo geom)
FeatureType/Formato
MB
/s
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 2700...
Escalabilidad
1 2 4 6 8 10 12 14
0
100
200
300
400
500
600
BGML 3.1.1 (175MB)
GML 3.1.1 (453MB)
Escalabilidad de Binary GML / GML
BGML 3.1.1 (175MB)GML 3.1.1 (453MB)
# de procesos concurrentes
Tie
mpo
de
resp
uest
a (s
egun
dos)
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 probada con la implementación de referencia en C.
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...
Miralo 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!
Luis W. Sevilla Gabriel Roldán
Top Related