Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://jetbrains.github.io/xodus
Transactional schema-less embedded database used by JetBrains YouTrack and JetBrains Hub.
https://jetbrains.github.io/xodus
database db embedded-database entity-store java key-value kotlin log-structured nosql schema-less snapshot-isolation transactional xodus youtrack
Last synced: 3 months ago
JSON representation
Transactional schema-less embedded database used by JetBrains YouTrack and JetBrains Hub.
- Host: GitHub
- URL: https://jetbrains.github.io/xodus
- Owner: JetBrains
- License: apache-2.0
- Created: 2014-04-29T09:36:04.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2024-07-29T16:53:54.000Z (3 months ago)
- Last Synced: 2024-08-01T13:33:40.874Z (3 months ago)
- Topics: database, db, embedded-database, entity-store, java, key-value, kotlin, log-structured, nosql, schema-less, snapshot-isolation, transactional, xodus, youtrack
- Language: Java
- Homepage:
- Size: 33.5 MB
- Stars: 1,178
- Watchers: 65
- Forks: 109
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
[![official JetBrains project](https://jb.gg/badges/official.svg)](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.jetbrains.xodus/xodus-openAPI/badge.svg)](https://search.maven.org/#search%7Cga%7C1%7Corg.jetbrains.xodus%20-dnq%20-time)
[![Last Release](https://img.shields.io/github/release-date/jetbrains/xodus.svg?logo=github)](https://github.com/jetbrains/xodus/releases/latest)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
![Pure Java + Kotlin](https://img.shields.io/badge/100%25-java%2bkotlin-orange.svg)
[![Stack Overflow](https://img.shields.io/:stack%20overflow-xodus-brightgreen.svg)](https://stackoverflow.com/questions/tagged/xodus)JetBrains Xodus is a transactional schema-less embedded database that is written in Java and [Kotlin](https://kotlinlang.org).
It was initially developed for [JetBrains YouTrack](https://jetbrains.com/youtrack), an issue tracking and project
management tool. Xodus is also used in [JetBrains Hub](https://jetbrains.com/hub), the user management platform
for JetBrains' team tools, and in some internal JetBrains projects.- Xodus is transactional and fully ACID-compliant.
- Xodus is highly concurrent. Reads are completely non-blocking due to [MVCC](https://en.wikipedia.org/wiki/Multiversion_concurrency_control) and
true [snapshot isolation](https://en.wikipedia.org/wiki/Snapshot_isolation).
- Xodus is schema-less and agile. It does not require schema migrations or refactorings.
- Xodus is embedded. It does not require installation or administration.
- Xodus is written in pure Java and [Kotlin](https://kotlinlang.org).
- Xodus is free and licensed under [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0.html).## Hello Worlds!
To start using Xodus, define dependencies:
```xmlorg.jetbrains.xodus
xodus-openAPI
2.0.1```
```kotlin
// in Gradle project
dependencies {
implementation("org.jetbrains.xodus:xodus-openAPI:2.0.1")
}
```Read more about [managing dependencies](https://github.com/JetBrains/xodus/wiki/Managing-Dependencies).
There are two different ways to deal with data, which results in two different API layers: [Environments](https://github.com/JetBrains/xodus/wiki/Environments) and [Entity Stores](https://github.com/JetBrains/xodus/wiki/Entity-Stores).
### EnvironmentsAdd dependency on `org.jetbrains.xodus:xodus-environment:2.0.1`.
```java
try (Environment env = Environments.newInstance("/home/me/.myAppData")) {
env.executeInTransaction(txn -> {
final Store store = env.openStore("Messages", StoreConfig.WITHOUT_DUPLICATES, txn);
store.put(txn, StringBinding.stringToEntry("Hello"), StringBinding.stringToEntry("World!"));
});
}
```
### Entity StoresAdd dependency on `org.jetbrains.xodus:xodus-entity-store:2.0.1`, `org.jetbrains.xodus:xodus-environment:2.0.1` and `org.jetbrains.xodus:xodus-vfs:2.0.1`.
```java
try (PersistentEntityStore entityStore = PersistentEntityStores.newInstance("/home/me/.myAppData")) {
entityStore.executeInTransaction(txn -> {
final Entity message = txn.newEntity("Message");
message.setProperty("hello", "World!");
});
}
```## Building from Source
[Gradle](https://www.gradle.org) is used to build, test, and publish. JDK 1.8 or higher is required. To build the project, run:./gradlew build
To assemble JARs and skip running tests, run:
./gradlew assemble
## Find out More
- [Xodus wiki](https://github.com/JetBrains/xodus/wiki)
- [Report an issue](https://youtrack.jetbrains.com/issues/XD)