My name is Robert Hastings. I'm the President of Moebius Solutions, Inc.
Moebius is contributing some research work we did for the Office of Navel
Research to the opensource community. Hopefully, this will be accepted as a
geoserver community module.
The module supports any client, but was specifically designed to support work
Forward Slope Inc. (FSI) was doing, which was using World Wind to synchronize
with a set of simple features that are updating. The features represent
positional information that was being updated in near-real-time. The original
designed leveraged wfs-notification (which FSI has already contributed as a
community module) to detect and push changes. During a "tiger team" event
Moebius designed a capability that would use Merkle Trees and SHA-1 checksums
to filter and pull changes from geoserver. The push style changes allow for
near-real-time updates and the pull style synchronization supports initial
startup synchronization and periodic check-pointing to confirm and/or repair.
The approach for integrating with geoserver is as a plugin. The plugin adds a
filter function and an output format. The filter function takes a JSON based
parameter that describes the level of the Merkle tree, the "buckets" at that
level and the SHA-1 checksum of all the children of each bucket. At level 0,
there is a single bucket and thus the SHA-1 represents the entire SHA-1 for all
the features. The filter then returns just the features that are in those
buckets where the SHA-1 of the bucket does not match the incoming JSON
description. In simpler terms, the filter filters out all features that the
client already has matching SHA-1's for. The output format takes the unfiltered
features and builds a JSON description that the describes the differences. The
intended client usage is to start at level 0, and then increase the level 1, 2,
3, etc. until each Merkle tree bucket covers only one feature. At that point,
the client turns off the output filter and does a final request using the
previous filter parameters and gets only the unfiltered features which
represent the ones where the client is out of sync.
This contribution included the core code to build the Merkle tree levels the
plugin and client code to exercise the plugin. If the client code is used, the
incoming updates callback to the client via a listener.
The code is currently sitting in a fork on github here:
https://github.com/MoebiusSolutions/geoserver/tree/master/src/community/geoserver-sync
Hopefully this will get pulled and included in the 2.5 release. If there is
anyway to get it included in a future 2.4.x release, we are happy to back port
it.
Thanks,
Robert Hastings, Lab-SDL: 619-553-7006, Cell: 858-395-4436, Moebius:
858-455-5431x210, Lab-250: 619-553-2263
------------------------------------------------------------------------------
Sponsored by Intel(R) XDK
Develop, test and display web and hybrid apps with a single code base.
Download it for free now!
http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg.clktrk
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel