Commit Graph

87 Commits

Author SHA1 Message Date
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 f17e95c6b6 Merge branch 'nats-endpoint' of https://github.com/lennycampino/tile38 into lennycampino-nats-endpoint 2018-08-08 18:29:22 -07:00
Lenny-Campino Hartmann 2f076524d4 fixed vendor fetch 2018-08-07 21:24:46 +02:00
Lenny-Campino Hartmann 4cae040470 Added go-nats to vendor 2018-08-07 21:21:35 +02: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
Alex Roitman 3fa209b1c0 Add json library (encode/decode methods) to lua. 2017-11-20 14:21:21 -08:00
Josh Baker 5753f3dc43 updated vendor for aws 2017-10-05 15:31:53 -07:00
Lenny Hartmann d6fe2eec96 Sqs endpoint (#221)
* test

* undo test

* Added aws SQS endpoint

* Added aws vendor

* Bug fixes

* enabled NOCOPY in build.sh
2017-10-05 14:08:03 -07:00
Alex Roitman b55300b729 Lua scripting feature. (#224)
* Start on lua scripting

* Implement evalsha, script load, script exists, and script flush

* Type conversions from lua to resp/json.
Refactor to make luastate and luascripts persistent in the controller.

* Change controller.command and all underlying commands to return resp.Value.
Serialize only during the ouput.

* First stab at tile38 call from lua

* Change tile38 into tile38.call in Lua

* Property return errors from scripts

* Minor refactoring.  No locking on script run

* Cleanup/refactoring

* Create a pool of 5 lua states, allow for more as needed. Refactor.

* Use safe map for scripts.  Add a limit for max number of lua states.  Refactor.

* Refactor

* Refactor script commands into atomic, read-only, and non-atomic classes.
Proper locking for all three classes.
Add tests for scripts

* More tests for scripts

* Properly escape newlines in lua-produced errors

* Better test for readonly failure

* Correctly convert ok/err messages between lua and resp.
Add pcall, sha1hex, error_reply, status_reply functions to tile38 namespace in lua.

* Add pcall test. Change writeErr to work with string argument

* Make sure eval/evalsha never attempt to write AOF

* Add eval-set and eval-get to benchmarks

* Fix eval benchmark tests, add more

* Improve benchmarks

* Optimizations and refactoring.

* Add lua memtest

* Typo

* Add dependency

* golint fixes

* gofmt fixes

* Add scripting commands to the core/commands.json

* Use ARGV for args inside lua
2017-10-05 08:20:40 -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 8d5f447e3e updated logger 2017-10-03 08:49:33 -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 b1da3a1ea5 Merge branch 'mqtt-endpoint' of https://github.com/m1ome/tile38 into m1ome-mqtt-endpoint 2017-09-04 07:22:25 -07:00
Josh Baker cd057088d9 index optimizations 2017-08-10 17:32:40 -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
Pavel Makarenko ce8da8e74b Merged AMQP endpoint 2017-03-23 10:27:23 +03:00
Pavel Makarenko 710ed96850 AMQP webhook support (#159) 2017-03-15 10:45:35 -07:00
Pavel Makarenko 9e0c8fc28e Added MQTT endpoint 2017-03-08 00:15:18 +03:00
Pavel Makarenko 790c660455 Kafka - Support in webhooks. (#152)
* Added sarama in vendor dependency

* Fixed Sarama deps

* Added Kafka endpoint support
2017-03-06 13:18:58 -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 06c873a3e8 Merge branch 'master' into memoptz 2016-12-04 12:15:09 -07:00
Josh Baker a664bade48 added black-box testing 2016-12-02 09:14:34 -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 13626db762 added maxmemory setting fixes #15 2016-05-23 19:44:25 -07:00
Josh Baker ab92df333c added resp package 2016-04-02 14:46:39 -07:00
Josh Baker d9103d9dd6 kill aof conns after shrink 2016-03-31 18:20:42 -07:00
Josh Baker b57d8b5fb6 removed boltdb 2016-03-30 09:31:16 -07:00
Josh Baker d97fedc385 disque endpoint 2016-03-20 08:24:20 -07:00
Josh Baker 4fc58f7f5c first commit 2016-03-04 16:08:16 -07:00