Databases are either easy to use or easy to scale. For example, relational databases were popularized in large part because of the programmability of SQL. However, this programmability comes at an incredible expense. Relational databases are notoriously difficult to support at scale, and so developers have increasingly turned toward more specialized NoSQL systems that scale well be shedding functionality.
Developers are not only forced to choose between productivity and performance, but also stark differences between query languages makes their choice of database effectively permanent. Even databases that claim to support the same SQL standard only implement incompatible subsets of its functionality. The lack of a truly uniform interface tightly couples databases and the procedures that are executed against them.
Caustic is a language for expressing and executing transactions on arbitrary key-value stores that is both straightforward to use and simple to integrate.
caustic-assets: Pictures, documentation, and musings.
caustic-benchmarks: Performance tests.
caustic-compiler: Programming language.
caustic-runtime: Virtual machine.
- Java 1.8
- MySQL 5.0+
- PostgreSQL 9.5+
- Python 2.7
- Scala 2.12
- ZooKeeper 3.4.10
Artifacts are published to the Sonatype Nexus and synced to Maven Central. Snapshots of the
master branch are built using Travis CI and images are available on Docker. The Maven coordinates of core build artifacts are as follows.
<!-- Client Library --> <dependency> <groupId>com.madavan</groupId> <artifactId>caustic-client_2.12</artifactId> <version>1.3.1</version> </dependency> <!-- Runtime Library --> <dependency> <groupId>com.madavan</groupId> <artifactId>caustic-runtime_2.12</artifactId> <version>1.3.1</version> </dependency>