gvSig y GeoServer: Rendimiento óptimo utilizando GML...

38
 gvSig y GeoServer: Rendimiento óptimo utilizando GML binario Luis W. Sevilla      -      Gabriel Roldán 2009-09-30

Transcript of gvSig y GeoServer: Rendimiento óptimo utilizando GML...

Page 1: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

gvSig y GeoServer: Rendimiento óptimo utilizando GML binario

Luis W. Sevilla      ­      Gabriel Roldán

2009­09­30

Page 2: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

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

Page 3: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

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

Page 4: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

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

Page 5: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

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.

Page 6: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

gvSIG<http://www.gvsig.org>

Software Libre

GeoServer<http://geoserver.org>

Software Libre

gvSIG libGPE<https://forge.osor.eu/projects/gvsig­gpe>

Software Libre

gvSIG BXML<https://forge.osor.eu/projects/gvsig­desktop>

Software Libre

Page 7: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

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

Page 8: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

­ VecrorialFileDriver­ GML y Binary GML

Streaming GML Driver

Page 9: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

­ Utiliza (y crea) un índice espacial

Streaming GML Driver

Page 10: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

­ Permite renderizado progresivo

Streaming GML Driver

Page 11: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

­ Y acceso aleatorio (igual que Shapefile)

Streaming GML Driver

Page 12: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

­ Con un uso eficiente de memoria

Streaming GML Driver

Streaming GML Driver Memory GML Driver

Page 13: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

Streaming GML Driver­ También se puede exportar a Binary GML

Desde el mismo menu que para GML

Page 14: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

Streaming GML Driver­ Simplemente seleccionando el formato

Page 15: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

Streaming GML Driver­ Y esperando... (poco :)

Page 16: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

Streaming GML Driver

 On the dark side... ­ Implementa acceso a geometrías, falta acceso a atributos. Work in progress

Page 17: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

Cliente WFS + Binary GML1­ Conexión                       2­ Selección de capa

Page 18: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

Cliente WFS + Binary GML3­ Negociación de formato

4­ Enjoy

Page 19: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

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

 

Page 20: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

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

Page 21: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

¿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>

Page 22: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

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

Page 23: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

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)

Page 24: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

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

Page 25: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

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

Page 26: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

­ 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

Page 27: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

­ org.gvsig.bxml.geoserver: implementa el punto de extensión WFSOutputFormat

­ Simplemente colocar los .jar de bxml en el classpath

Page 28: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

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>

Page 29: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

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|..........

Page 30: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

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

Page 31: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

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.

Page 32: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

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...

Page 33: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

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.

Page 34: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

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

Page 35: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

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)

Page 36: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

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.

Page 37: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

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.

Page 38: gvSig y GeoServer: Rendimiento óptimo utilizando GML ...downloads.gvsig.org/download/events/jornadas-lac/1as...Librería BXML Binary Extensible Markup Language (BXML) Encoding Specification

   

MUCHAS GRACIAS!

Luis W. Sevilla      ­      Gabriel Roldán