All Projects → JetBrains → Xodus

JetBrains / Xodus

Licence: apache-2.0
Transactional schema-less embedded database used by JetBrains YouTrack and JetBrains Hub.

Programming Languages

java
68154 projects - #9 most used programming language
kotlin
9241 projects

Projects that are alternatives of or similar to Xodus

Cog
A Persistent Embedded Graph Database for Python
Stars: ✭ 90 (-89.58%)
Mutual labels:  database, nosql, key-value, embedded-database
Ardb
A redis protocol compatible nosql, it support multiple storage engines as backend like Google's LevelDB, Facebook's RocksDB, OpenLDAP's LMDB, PerconaFT, WiredTiger, ForestDB.
Stars: ✭ 1,707 (+97.57%)
Mutual labels:  database, nosql, key-value
Gkvdb
[mirror] Go语言开发的基于DRH(Deep-Re-Hash)深度哈希分区算法的高性能高可用Key-Value嵌入式事务数据库。基于纯Go语言实现,具有优异的跨平台性,良好的高可用及文件IO复用设计,高效的底层数据库文件操作性能,支持原子操作、批量操作、事务操作、多表操作、多表事务、随机遍历等特性。
Stars: ✭ 109 (-87.38%)
Mutual labels:  database, nosql, key-value
Hive
Lightweight and blazing fast key-value database written in pure Dart.
Stars: ✭ 2,681 (+210.3%)
Mutual labels:  database, nosql, key-value
Bitcask
🔑A high performance Key/Value store written in Go with a predictable read/write performance and high throughput. Uses a Bitcask on-disk layout (LSM+WAL) similar to Riak.
Stars: ✭ 654 (-24.31%)
Mutual labels:  database, key-value, db
Unqlite
An Embedded NoSQL, Transactional Database Engine
Stars: ✭ 1,583 (+83.22%)
Mutual labels:  database, nosql, key-value
Libmdbx
One of the fastest embeddable key-value ACID database without WAL. libmdbx surpasses the legendary LMDB in terms of reliability, features and performance.
Stars: ✭ 729 (-15.62%)
Mutual labels:  database, nosql, key-value
Arangodb
🥑 ArangoDB is a native multi-model database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions.
Stars: ✭ 11,880 (+1275%)
Mutual labels:  database, nosql, key-value
Db
Data access layer for PostgreSQL, CockroachDB, MySQL, SQLite and MongoDB with ORM-like features.
Stars: ✭ 2,832 (+227.78%)
Mutual labels:  database, nosql, db
Tiedot
A rudimentary implementation of a basic document (NoSQL) database in Go
Stars: ✭ 2,643 (+205.9%)
Mutual labels:  database, nosql, db
AloeDB
Light, Embeddable, NoSQL database for Deno 🦕
Stars: ✭ 111 (-87.15%)
Mutual labels:  nosql, db, embedded-database
Ejdb
🏂 EJDB 2.0 — Embeddable JSON Database engine C library. Simple XPath like query language (JQL). Websockets / Android / iOS / React Native / Flutter / Java / Dart / Node.js bindings. Docker image.
Stars: ✭ 1,187 (+37.38%)
Mutual labels:  database, nosql, key-value
Cutedb
A slick BTree on disk based key value store implemented in pure Go
Stars: ✭ 67 (-92.25%)
Mutual labels:  database, key-value, embedded-database
Keyvast
KeyVast - A key value store
Stars: ✭ 33 (-96.18%)
Mutual labels:  database, nosql, key-value
Nitrite Java
Java embedded nosql document store
Stars: ✭ 538 (-37.73%)
Mutual labels:  database, nosql, embedded-database
Iowow
The skiplist based persistent key/value storage engine
Stars: ✭ 206 (-76.16%)
Mutual labels:  database, nosql, key-value
Bitnami Docker Redis
Bitnami Redis Docker Image
Stars: ✭ 317 (-63.31%)
Mutual labels:  database, nosql, key-value
Lmdbjava
Lightning Memory Database (LMDB) for Java: a low latency, transactional, sorted, embedded, key-value store
Stars: ✭ 546 (-36.81%)
Mutual labels:  database, key-value, embedded-database
Genji
Document-oriented, embedded SQL database
Stars: ✭ 636 (-26.39%)
Mutual labels:  database, embedded-database
Node Sqlite
SQLite client for Node.js applications with SQL-based migrations API written in Typescript
Stars: ✭ 642 (-25.69%)
Mutual labels:  database, db

official JetBrains project Maven Central Last Release TeamCity (build status) License Pure Java + Kotlin Stack Overflow

JetBrains Xodus is a transactional schema-less embedded database that is written in Java and Kotlin. It was initially developed for JetBrains YouTrack, an issue tracking and project management tool. Xodus is also used in JetBrains 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 and true 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.
  • Xodus is free and licensed under Apache 2.0.

Hello Worlds!

To start using Xodus, define dependencies:

<!-- in Maven project -->
<dependency>
    <groupId>org.jetbrains.xodus</groupId>
    <artifactId>xodus-openAPI</artifactId>
    <version>1.3.232</version>
</dependency>
// in Gradle project
dependencies {
    compile 'org.jetbrains.xodus:xodus-openAPI:1.3.232'
}

Read more about managing dependencies.

There are three different ways to deal with data, which results in three different API layers: Environments, Entity Stores and Virtual File Systems.

Environments

Add dependency on org.jetbrains.xodus:xodus-environment:1.3.232.

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 Stores

Add dependency on org.jetbrains.xodus:xodus-entity-store:1.3.232, org.jetbrains.xodus:xodus-environment:1.3.232 and org.jetbrains.xodus:xodus-vfs:1.3.232.

try (PersistentEntityStore entityStore = PersistentEntityStores.newInstance("/home/me/.myAppData")) {
    entityStore.executeInTransaction(txn -> {
        final Entity message = txn.newEntity("Message");
        message.setProperty("hello", "World!");
    });
}

Virtual File Systems

Add dependency on org.jetbrains.xodus:xodus-vfs:1.3.232 and org.jetbrains.xodus:xodus-environment:1.3.232.

try (Environment env = Environments.newInstance("/home/me/.myAppData")) {
    final VirtualFileSystem vfs = new VirtualFileSystem(env);
    env.executeInTransaction(txn -> {
        final File file = vfs.createFile(txn, "Messages");
        try (DataOutputStream output = new DataOutputStream(vfs.writeFile(txn, file))) {
            output.writeUTF("Hello ");
            output.writeUTF("World!");
        } catch (IOException e) {
            throw new ExodusException(e);
        }
    });
    vfs.shutdown();
}

Building from Source

Gradle 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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].