Commit Graph

26 Commits

Author SHA1 Message Date
tidwall 30d31d0926 Packed fields option 2019-02-17 13:10:02 -07:00
tidwall ffdf90eebf Added packed-fields flag 2019-02-15 14:02:04 -07:00
tidwall e84c03a2a6 Bitfield header for item 2019-02-15 12:51:26 -07:00
tidwall bdfa11e8dd Background fsync and aofbuf flushing 2019-02-15 11:11:40 -07:00
tidwall 8bbf6ab848 wip Packed 2019-02-15 08:47:27 -07:00
tidwall a60dc57598 Isolated fields type 2019-02-15 08:26:55 -07:00
tidwall 3ac8dc2ffb Optimized simple points for smaller memory 2019-02-14 15:53:46 -07:00
tidwall 3c50082d47 Move geo obj to bottom of struct 2019-02-13 17:18:08 -07:00
tidwall 9d8ce14ffd Refactor field optimizations 2019-02-13 12:43:38 -07:00
tidwall 448aa347e6 Reversed fields/id grouping order 2019-02-12 16:36:05 -07:00
tidwall b5dcb18c54 Updated tests 2019-02-12 16:35:35 -07:00
tidwall d115b40d71 Collection items optimization 2019-02-12 12:06:24 -07:00
tidwall 850c36b155 Added optimized btree 2019-02-12 09:24:58 -07:00
tidwall 1a977d1010 Merge branch 'master' into field-optz 2019-02-12 07:53:26 -07:00
tidwall 30f903bd51 Require properties member for geojson features 2019-02-12 06:49:13 -07:00
tidwall bbe474bcd1 Minor optimizations to object fields 2019-02-11 15:27:46 -07:00
tidwall 92c1ce8ef9 Update tinybtree dep 2019-02-11 13:39:29 -07:00
Steve Lacy d730e660cf
Return false from Valid() 2019-01-10 12:32:47 -07:00
Steve Lacy 1a8993feaf
Add RequireValid env variable and parse options 2019-01-10 09:36:58 -07:00
tidwall b2203fcb97 Fix nearby fast-fail 2018-11-11 09:05:26 -07:00
tidwall 372744b192 More hacking vendored circle.go 2018-11-11 09:04:00 -07:00
tidwall 07bae979a5 Added Cursor interface 2018-11-02 06:09:56 -07:00
Alex Roitman bf5317f040 Fix tests. 2018-11-01 15:18:55 -07:00
Alex Roitman 0933c541f4 Refactor cursor/paging. 2018-10-31 22:01:37 -07:00
Alex Roitman b94f3685b6 Move iterating up to the cursor before any tests. 2018-10-31 22:01:24 -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