A Clojure client for RethinkDB offering asynchronous, lock-free, and idiomatic query semantics.
Revise is a Clojure client library for RethinkDB, enabling developers to interact with the distributed document database using Clojure's native syntax and functional paradigms. It solves the problem of bridging RethinkDB's real-time query capabilities with Clojure's expressive power, providing asynchronous, lock-free operations.
Clojure developers building applications that require real-time data synchronization, distributed data storage, or leveraging RethinkDB's change feeds.
Developers choose Revise for its idiomatic Clojure API, comprehensive feature coverage, and efficient asynchronous query execution, making it a natural fit for Clojure projects using RethinkDB.
RethinkDB client for Clojure
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses Clojure's functional style with lambda support, making queries like (r/lambda [n] (r/* n 2)) feel natural and integrated into Clojure codebases.
Supports non-blocking queries with run-async for concurrent operations, enhancing performance in real-time applications as demonstrated in the README examples.
Implements the full RethinkDB query language including CRUD, joins, aggregations, and date/time operations, ensuring feature parity with official drivers.
Allows configurable connections with timeouts and error handling, as detailed in the connections.md and core namespace functions.
Enables manual compilation of queries into protocol buffers via bitemyapp.revise.protoengine/compile-term for advanced inspection and debugging.
The README explicitly states it's 'alpha-grade,' meaning potential bugs, breaking changes, and instability that make it unsuitable for production without careful testing.
Documentation is loosely based on Python API docs and may lack depth; as a community-maintained library for a niche stack, external resources and help are limited.
Using run-async sacrifices built-in error handling, requiring manual checks on agent states and promises, which can lead to subtle bugs in concurrent code.
Tied to RethinkDB's future and Clojure's ecosystem health; if either declines, maintenance and updates for Revise could stagnate, risking long-term viability.