Goals
- Rich support for geojson
- Filtering via jsonpath-like expressions
- load geojson natively (i.e. no converter definition, or an empty converter)
- heterogenous geojson docs in one table
- multiple 'materialized views' (sfts) per table
Use Case
Considerations
- support json-schema
- efficient/compressed storage
- variable attributes/flexible schema
- attribute indices
- pushdown predicates
- query syntax and predicates - possibly build off mongodb, jq, solr, postgres jsonb
- geoserver/simplefeature integration
- ingest api/services
- try to avoid parsing json during filtering
- bson?
- avro json?
- read schemas for on-the-fly views
- could have 3 avro schemas in our pipeline, 1. full json, 2. query schema 3. relational projection schema
- convert json-path or other query syntax into avro path for evaluation
- skip-fields during read for optimization
- would be good for nifi and other tools that support avro/json conversion
- optimizations - define materialized views up front and/or with m/r jobs instead of compute on the fly (consider using column groups)
- optimizations - allow for definition of fields up front and replace serialized strings with field ids
- projects to evaluate for ideas - bson, msgpack, grpc, protocol-bufs, avro, postgres jsonb, solr geo
Design
- Leverage the native-api?
- alternative - support json attributes in SimpleFeatures?
- use converters for transforming incoming geojson
- API suggestions -
- rest endpoint that takes geojson and puts it in the db
- native api that takes a string of geojson
- native api that takes a geojson like java object
- endpoint to convert back to geojson? (possibly geoserver json output would be good enough)
Tasks
- TBD
References
http://docs.geotools.org/stable/javadocs/org/geotools/geojson/feature/FeatureJSON.html