Skip to content
LambdaZen edited this page Mar 25, 2023 · 24 revisions

Bitsy Logo

Introduction

Bitsy is a small, fast, embeddable, durable in-memory graph database that implements Apache Tinkerpop.

Features

  • Support for Apache Tinkerpop aka Tinkerpop3
  • ACID guarantees on transactions
  • Designed for multi-threaded OLTP applications
  • Implements optimistic concurrency control
  • Data stored in readable text files
  • Serialization using the Jackson JSON processor
  • Recovers cleanly from power failures and crashes provided the underlying file system supports metadata journaling, like NTFS, ext3, ext4, XFS and JFS (not FAT32 or ext2)
  • High read and write throughputs in multi-threaded environments
  • Supports online backups through a JMX interface

Getting started

Embedding Bitsy

Maven

You can add Bitsy and its dependencies to your project by adding this dependency:

<dependency>
  <groupId>com.lambdazen.bitsy</groupId>
  <artifactId>bitsy</artifactId>
  <version>3.6.2</version>
</dependency>

Using Bitsy

The following code snippet shows how Bitsy can be launched and stopped:

import java.nio.file.Path;
import com.lambdazen.bitsy.BitsyGraph;

public class Test {
    public static void main(String[] args) {
        Path dbPath = Paths.get("...path to a directory...");

        // Open the database
        BitsyGraph myGraph = new BitsyGraph(dbPath);

        ... use myGraph in any number of threads

        // Close the database
        myGraph.shutdown();
    }
}

You can use the BitsyAutoReloadingGraph instead of BitsyGraph for a more permissive Tinkerpop3 implementation that automatically reloads vertices and edges when accessed outside the scope of a transaction.

Note: The above example uses the simple constructor for BitsyGraph. Refer to Tuning Bitsy for other constructors, including a memory-only (non-durable) database constructor.

Using Bitsy in Gremlin Console (embedded)

You can run Bitsy in embedded mode from your Gremlin Console as follows:

Now you can use g for Gremlin traversals and graph for graph modification operations like addVertex.

Using Bitsy in Gremlin Console with Gremlin server

You can run Bitsy in the Gremlin Server as follows:

Now you can launch the Gremlin Console (no changes necessary) and run

:remote connect tinkerpop.server conf/remote.yaml

to connect to the Gremlin server and execute commands on the graph and g objects.

Deep dive

This presentation provides an overview of Bitsy's original design principles and features. Improvements in version 1.5 are summarized in this presentation. Bitsy 3.x is now compatible with Tinkerpop v3.

The following Wiki pages go into a little more detail:

Licensing

Bitsy is available under the Apache 2.0 License.