3 ms·
Please tell us more about point 5!
by simplify 7y ago
Please tell us more about point 5!
- refset 7y agoCrux uses a Worst-Case Optimal Join [0] algorithm with bitemporal indexes, and the Datalog-specific query layer is implemented in less than a thousand lines of Clojure: https://github.com/juxt/crux/blob/master/crux-core/src/crux/query.clj https://github.com/juxt/crux/blob/master/crux-core/src/crux/... SQL certainly provides a lot of bells and whistles but Crux has the advantage of consistent in-process queries (i.e. the "database as a value") which means you can combine custom code with multiple queries efficiently to achieve a much larger range of possibilities, such as graph algorithms like Bidirectional BFS [1]. [0] https://arxiv.org/pdf/1803.09930.pdf https://arxiv.org/pdf/1803.09930.pdf [1] https://github.com/juxt/crux/blob/master/docs/example/imdb/src/imdb/main.clj https://github.com/juxt/crux/blob/master/docs/example/imdb/s...