Commit Graph

69 Commits

Author SHA1 Message Date
tidwall 7cc4008442 Added multiple indexing kinds 2018-10-21 19:08:56 -07:00
tidwall 3e41a2ecce Update gjson/sjson 2018-10-18 06:30:41 -07:00
tidwall cc75cf22a8 Fix #369 poly in hole query 2018-10-18 06:28:31 -07:00
tidwall 1544f2914d Fix Circle type 2018-10-16 08:55:26 -07:00
tidwall 6257ddba78 Faster point in polygon / GeoJSON updates
The big change is that the GeoJSON package has been completely
rewritten to fix a few of geometry calculation bugs, increase
performance, and to better follow the GeoJSON spec RFC 7946.

GeoJSON updates

- A LineString now requires at least two points.
- All json members, even foreign, now persist with the object.
- The bbox member persists too but is no longer used for geometry
  calculations. This is change in behavior. Previously Tile38 would
  treat the bbox as the object's physical rectangle.
- Corrections to geometry intersects and within calculations.

Faster spatial queries

- The performance of Point-in-polygon and object intersect operations
  are greatly improved for complex polygons and line strings. It went
  from O(n) to roughly O(log n).
- The same for all collection types with many children, including
  FeatureCollection, GeometryCollection, MultiPoint, MultiLineString,
  and MultiPolygon.

Codebase changes

- The pkg directory has been renamed to internal
- The GeoJSON internal package has been moved to a seperate repo at
  https://github.com/tidwall/geojson. It's now vendored.

Please look out for higher memory usage for datasets using complex
shapes. A complex shape is one that has 64 or more points. For these
shapes it's expected that there will be increase of least 54 bytes per
point.
2018-10-13 04:30:48 -07:00
tidwall 1d78a41e41 Added BoxTree 2018-08-02 19:57:11 -07:00
Josh Baker 0aa04a1910 vendor lotsa package 2018-04-09 08:55:22 -07:00
Josh Baker 26d0083faf Update vendoring to use golang/dep
commit a1a37d335a8e89ac89d85c00c8585d3fc02e064a
Author: Josh Baker <joshbaker77@gmail.com>
Date:   Thu Oct 5 07:36:54 2017 -0700

    use symlink instead of copy

commit 96399c2c92620f633611c778e5473200bfd48d41
Author: Josh Baker <joshbaker77@gmail.com>
Date:   Thu Oct 5 07:19:26 2017 -0700

    use dep for vendoring
2017-10-05 07:40:19 -07:00
Josh Baker d817814200 Optimized pipelining
Performance gains for pipelining commands over the network.
Using tile38-benchmark and the -P flag it's possible to see 2x-10x boost
in requests per second.
2017-09-30 19:34:25 -07:00
Josh Baker 033f782a84 update redbench 2017-09-30 13:07:39 -07:00
Josh Baker d6936636c2 updated gjson 2017-09-29 18:10:12 -07:00
Josh Baker 300635727a apply LIMIT after WHERE clause, fix #199 2017-07-24 08:26:48 -07:00
Josh Baker 6008a78281 vendored redbench 2017-03-31 08:31:33 -07:00
Josh Baker 44cf149325 added JSET, JGET, JDEL commands
JSET key id path value [RAW]
JGET key id path [RAW]
JDEL key id path

Allows for working with JSON strings, for example:

  JSET user 901 name Tom
  JGET user 901
  > '{"name":"Tom"}'
  JSET user 901 name.first Tom
  JSET user 901 name.last Anderson
  > '{"name":{"first":"Tom","last":"Anderson"}'
  JDEL user 901 name.last
  > '{"name":{"first":"Tom"}'

All commands use the GJSON path syntax, for more information:

  Setting JSON: https://github.com/tidwall/sjson
  Getting JSON: https://github.com/tidwall/gjson
2016-12-12 10:33:28 -07:00
Josh Baker 1ac6ad9ebd optimized idprops field for #71 2016-11-07 13:04:21 -07:00
Josh Baker 3b99a6276e grpc support 2016-09-11 21:25:09 -07:00
Josh Baker 6d944ada32 fixed #49. fragmented pipeline requests. 2016-09-08 16:11:53 -07:00
Josh Baker bfa204067c replaced vendor btree with custom version 2016-07-09 19:43:52 -07:00
Josh Baker ab92df333c added resp package 2016-04-02 14:46:39 -07:00