Getting The Best Performance For GeoJSON Map Visualizations: PostGIS Vs CouchDB Backend

Luca Morandini (University of Melbourne) with Martin Tomko (University of Melbourne), Richard Sinnott (University of Melbourne)

12:00 on Saturday 21st September (in Session 62, starting at 11 a.m., Sir Clive Granger Building: A41)

Show in Timetable

Description: Rich user experiences call for JSON data, but what combination of DBMS, compression, generalization, etc. can deliver the best performance on the client? During the course of this presentation we will present our findings, showing how we collected test data and built statistical models to gauge the contribution of each factor (DBMS, compression, etc.) to the overall performance.

In order to deliver rich user experience to user, features (attribute data and geometries) have to be sent to the client for mouse-over visual effects, synchronization between charts, tables and maps, and on-the-fly classifications. GeoJSON is one of the most popular encodings for the transfer of features for client-side map visualization. The performance of client visualizations depends on a number of factors: message size, client memory allocation, bandwidth, and the speed of the database back-end amongst the main ones. Large GeoJSON-encoded datasets can substantially slow down loading and stylization times, and also crash the browser when too many geometries are requested. A combination of techniques can be used to reduce the size of the data (polygon generalization, compression, etc). The choice of an open-source DBMS for geo-spatial applications used to be easy: PostGIS is powerful, well-supported, robust and fast RDBMS ? On the other hand, unstructured data, such as (Geo)JSON, may be better served by document-oriented DBMS such as Apache CouchDB. The performance of PostGIS and CouchDB in producing GeoJSON polygons with different combination of factors that are known to affect performance was tested: compression of GeoJSON (zip) to reduce transmission times, different levels of geometry generalization (reducing the number of vertices in transferred geometries), precision reduction (the reduction of numbers of decimal digits encoding coordinates), and the use of a topological JSON encoding of geometries (TopoJSON) to avoid redundancy of edges transferred. We present the results of a benchmark exercise testing the performance of an OpenLayers interface backed by a persistence layer implemented using PostGIS and CouchD. Test data were collected using an automated test application based on Selenium, which allowed to gather repeated observations for every combination of factors and build statistical models of performance. These statistical models help to pick the best combination of techniques and DBMS, and to gauge the relative contribution of every technique to the overall performance.