ScalarDB is a universal transaction manager that achieves:
- database/storage-agnostic ACID transactions in a scalable manner even if an underlying database or storage is not ACID-compliant.
- multi-storage/database/service ACID transactions that can span multiple (possibly different) databases, storages, and services.
The library is available on maven central repository. You can install it in your application using your build tool such as Gradle and Maven.
To add a dependency on ScalarDB using Gradle, use the following:
dependencies {
implementation 'com.scalar-labs:scalardb:3.12.2'
}
To add a dependency using Maven:
<dependency>
<groupId>com.scalar-labs</groupId>
<artifactId>scalardb</artifactId>
<version>3.12.2</version>
</dependency>
- Getting started
- Java API Guide
- ScalarDB Samples
- ScalarDB Server
- Multi-storage Transactions
- Two-phase Commit Transactions
- Design document
- Schema Loader
- Requirements and Recommendations for the Underlying Databases of ScalarDB
- How to Back up and Restore
- ScalarDB supported databases
- Configurations
- Storage abstraction
- Slides
- Making Cassandra more capable, faster, and more reliable at ApacheCon@Home 2020
- Scalar DB: A library that makes non-ACID databases ACID-compliant at Database Lounge Tokyo #6 2020
- Transaction Management on Cassandra at Next Generation Cassandra Conference / ApacheCon NA 2019
- Javadoc
- scalardb - ScalarDB: A universal transaction manager that achieves database-agnostic transactions and distributed transactions that span multiple databases
- scalardb-rpc - ScalarDB RPC libraries
- scalardb-server - ScalarDB Server: A gRPC interface of ScalarDB
- scalardb-schema-loader - ScalarDB Schema Loader: A tool for schema creation and schema deletion in ScalarDB
- Jepsen tests
- TLA+
This library is mainly maintained by the Scalar Engineering Team, but of course we appreciate any help.
- For asking questions, finding answers and helping other users, please go to stackoverflow and use scalardb tag.
- For filing bugs, suggesting improvements, or requesting new features, help us out by opening an issue.
Here are the contributors we are especially thankful for:
- Toshihiro Suzuki - created Phoenix adapter for ScalarDB
- Yonezawa-T2 - reported bugs around Serializable and proposed a new Serializable strategy (now named Extra-Read)
This project uses pre-commit to automate code format and so on as much as possible. If you're interested in the development of ScalarDB, please install pre-commit and the git hook script as follows.
$ ls -a .pre-commit-config.yaml
.pre-commit-config.yaml
$ pre-commit install
The code formatter is automatically executed when commiting files. A commit will fail and be formatted by the formatter when any invalid code format is detected. Try to commit the change again.
All the exception and log messages in this project are consistent with the following guidelines:
- The first character is capitalized.
- The message does not end with a punctuation mark.
When contributing to this project, please follow these guidelines.
ScalarDB is dual-licensed under both the Apache 2.0 License (found in the LICENSE file in the root directory) and a commercial license. You may select, at your option, one of the above-listed licenses. The commercial license includes several enterprise-grade features such as ScalarDB Server, management tools, and declarative query interfaces like GraphQL and SQL interfaces. Regarding the commercial license, please contact us for more information.