Clickhouse storage backend for Janusgraph

Overview

Clickhouse storage backend for Janusgraph

Overview

Clickhouse implementation of Janusgraph storage backend.

Features

Getting Started

  1. Add dependency to your maven project. See maven central repository to find the latest version.
<dependency>
    <groupId>io.github.artjourney</groupId>
    <artifactId>janusgraph-clickhouse</artifactId>
    <version>${janusgraph-clickhouse.version}</version>
</dependency>
  1. Config the Janusgraph.
ModifiableConfiguration config = GraphDatabaseConfiguration.buildGraphConfiguration();
config.set(GraphDatabaseConfiguration.STORAGE_BACKEND, "io.github.artjourney.janusgraph.ClickhouseStoreManager");
config.set(ClickhouseConfiguration.JDBC_URL, "jdbc:ch://127.0.0.1:8123/default?connect_timeout=60000&http_keep_alive=true");
config.set(ClickhouseConfiguration.JDBC_USERNAME, "");
config.set(ClickhouseConfiguration.JDBC_PASSWORD, "");
config.set(ClickhouseConfiguration.AUTO_CREATE_TABLE, true);
JanusGraph graph = JanusGraphFactory.open(config);
  1. Clickhouse Configuration.
Configuration Property Name Description Data Type Default Value Mutability
AUTO_CREATE_TABLE storage.clickhouse.auto-create-table When this is true, JanusGraph will attempt to auto create tables if not exists. This is useful when running JanusGraph in first running instance. Boolean true MASKABLE
JDBC_URL storage.clickhouse.jdbc.url The jdbc url of the clickhouse. String jdbc:ch://127.0.0.1:8123 LOCAL
JDBC_USERNAME storage.clickhouse.jdbc.username The jdbc username of the clickhouse. String (no default value) LOCAL
JDBC_PASSWORD storage.clickhouse.jdbc.password The jdbc password of the clickhouse. String (no default value) LOCAL
JDBC_MAXIMUM_POOL_SIZE storage.clickhouse.jdbc.maximum-pool-size The jdbc maximum pool size of the clickhouse. Integer 10 LOCAL
JDBC_MINIMUM_IDLE storage.clickhouse.jdbc.minimum-idle The jdbc minimum idle of the clickhouse. Integer 5 LOCAL
JDBC_MAX_LIFETIME storage.clickhouse.jdbc.max-lifetime The jdbc max lifetime of the clickhouse. Integer 1800000 LOCAL
JDBC_IDLE_TIMEOUT storage.clickhouse.jdbc.idle-timeout The jdbc idle timeout of the clickhouse. Integer 600000 LOCAL
JDBC_CONNECTION_TIMEOUT storage.clickhouse.jdbc.connection-timeout The jdbc connection timeout of the clickhouse. Integer 60000 LOCAL
JDBC_TCP_KEEPALIVE storage.clickhouse.jdbc.tcp-keepalive The jdbc if tcp keep alive enabled of the clickhouse. Boolean true LOCAL
JDBC_KEEPALIVE_TIME storage.clickhouse.jdbc.keepalive-time The jdbc keep alive time of the clickhouse. Integer 60000 LOCAL
BATCH_MUTATION_SIZE storage.clickhouse.jdbc.batch-mutation-size The batch mutation(insert/delete) size of the clickhouse. Integer 1000 LOCAL

Example of configuration:

storage.clickhouse.auto-create-table=true
storage.clickhouse.jdbc.url=jdbc:ch://127.0.0.1:8123/default
storage.clickhouse.jdbc.username=
storage.clickhouse.jdbc.password=
storage.clickhouse.jdbc.maximum-pool-size=10
storage.clickhouse.jdbc.minimum-idle=5
storage.clickhouse.jdbc.max-lifetime=1800000
storage.clickhouse.jdbc.idle-timeout=600000
storage.clickhouse.jdbc.connection-timeout=60000
storage.clickhouse.jdbc.tcp-keepalive=true
storage.clickhouse.jdbc.keepalive-time=60000
storage.clickhouse.jdbc.batch-mutation-size=1000

Known limitations

  1. ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP). It's not transactions. Multiple instances write may case dirty reads that may lead to some unwanted side effect like ghost vertices.
  2. It will create MergeTree Engine of tables defaults. If you want to use ReplicatedMergeTree or Distributed, you can manually create tables. Table contains k,c,v columns, which types are Array(Int8).
    CREATE TABLE table_name (k Array(Int8), c Array(Int8), v Array(Int8)) ENGINE = ReplicatedMergeTree(...) ORDER BY (k,c)
    
    • You should create 9 tables as follows:
      • system_properties
      • system_properties_lock_
      • graphindex
      • graphindex_lock_
      • edgestore
      • edgestore_lock_
      • janusgraph_ids
      • systemlog
      • txlog
You might also like...

ClickHouse AST Parser & Visitor

ClickHouse AST Parser, it is much more than a parser. It is a convenient toolbox that provides services related to ClickHouse AST.

Nov 10, 2022

Share the chat messages across Minecraft Servers via HTTP backend powered by Spring Boot, this is the backend part of the project.

InterconnectedChat-Backend Share the chat messages across Minecraft Servers via HTTP backend powered by Spring Boot, this is the backend part of the p

Oct 6, 2021

Apache ORC - the smallest, fastest columnar storage for Hadoop workloads

Apache ORC ORC is a self-describing type-aware columnar file format designed for Hadoop workloads. It is optimized for large streaming reads, but with

Jan 2, 2023

MapDB provides concurrent Maps, Sets and Queues backed by disk storage or off-heap-memory. It is a fast and easy to use embedded Java database engine.

MapDB: database engine MapDB combines embedded database engine and Java collections. It is free under Apache 2 license. MapDB is flexible and can be u

Dec 30, 2022

An extremely easy way to perform background processing in Java. Backed by persistent storage. Open and free for commercial use.

An extremely easy way to perform background processing in Java. Backed by persistent storage. Open and free for commercial use.

The ultimate library to perform background processing on the JVM. Dead simple API. Extensible. Reliable. Distributed and backed by persistent storage.

Jan 6, 2023

Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

Themis provides strong, usable cryptography for busy people General purpose cryptographic library for storage and messaging for iOS (Swift, Obj-C), An

Dec 29, 2022

MapDB provides concurrent Maps, Sets and Queues backed by disk storage or off-heap-memory. It is a fast and easy to use embedded Java database engine.

MapDB: database engine MapDB combines embedded database engine and Java collections. It is free under Apache 2 license. MapDB is flexible and can be u

Jan 1, 2023

DankTech is an attempt to recreate the Dank Storage mod (and \dank\null\ etc.) from a plugin.

DankTech is an attempt to recreate the Dank Storage mod (and \dank\null\ etc.) from a plugin.

DankTech is an attempt to recreate the Dank Storage mod, /dank/null and OpenBlocks /dev/null in the form of a plugin. Features The plugin currently fe

Feb 6, 2022

An easy-to-use wrapper for many storage systems.

Data Store An easy-to-use wrapper for redis' cached storage system. (support for more data types coming soon) Note: This project is unfinished, and th

Jul 17, 2022

Simple, fast Key-Value storage. Inspired by HaloDB

Phantom Introduction Phantom is an embedded key-value store, provides extreme high write throughput while maintains low latency data access. Phantom w

Apr 14, 2022

FastKV is an efficient and reliable key-value storage component written with Java.

FastKV 中文文档 FastKV is an efficient and reliable key-value storage component written with Java. It can be used on platforms with JVM environment, such

Dec 28, 2022

Firehose is an extensible, no-code, and cloud-native service to load real-time streaming data from Kafka to data stores, data lakes, and analytical storage systems.

Firehose - Firehose is an extensible, no-code, and cloud-native service to load real-time streaming data from Kafka to data stores, data lakes, and analytical storage systems.

Dec 22, 2022

OBKV Table Client is Java Library that can be used to access table data from OceanBase storage layer.

OBKV Table Client OBKV Table Client is Java Library that can be used to access table data from OceanBase storage layer. Its access method is different

Dec 16, 2022

KSAN : Software Defined Storage for Objects and Files

KSAN : Software Defined Storage for Objects and Files

KSAN : Software Defined Storage for Objects and Files Overview KSAN은 대규모 오브젝트 스토리지 서비스를 안정적이며 효율적으로 제공하기 위해 설계된 소프트웨어 정의 오브젝트 스토리지 시스템입니다. KSAN 시스템은 기

Dec 28, 2022

Provide image storage and access services.

Provide image storage and access services.

Jan 23, 2022

Hudi manages the storage of large analytical datasets on DFS

Apache Hudi Apache Hudi (pronounced Hoodie) stands for Hadoop Upserts Deletes and Incrementals. Hudi manages the storage of large analytical datasets

Dec 30, 2022

Digital storage system mod for Minecraft b1.7.3.

RetroStorage Digital storage system mod for Minecraft b1.7.3. Requires Modloader. Features: ItemNBT (Allows items to carry NBT data) Digital Network (

Dec 15, 2022

PolarDB-X is a cloud native distributed SQL Database designed for high concurrency, massive storage, complex querying scenarios.

PolarDB-X is a cloud native distributed SQL Database designed for high concurrency, massive storage, complex querying scenarios.

中文文档 What is PolarDB-X ? PolarDB-X is a cloud native distributed SQL Database designed for high concurrency, massive storage and complex querying scen

Dec 31, 2022
Owner
null
ClickHouse AST Parser & Visitor

ClickHouse AST Parser, it is much more than a parser. It is a convenient toolbox that provides services related to ClickHouse AST.

Jiaming Mai 66 Nov 10, 2022
MapDB provides concurrent Maps, Sets and Queues backed by disk storage or off-heap-memory. It is a fast and easy to use embedded Java database engine.

MapDB: database engine MapDB combines embedded database engine and Java collections. It is free under Apache 2 license. MapDB is flexible and can be u

Jan Kotek 4.6k Dec 30, 2022
MapDB provides concurrent Maps, Sets and Queues backed by disk storage or off-heap-memory. It is a fast and easy to use embedded Java database engine.

MapDB: database engine MapDB combines embedded database engine and Java collections. It is free under Apache 2 license. MapDB is flexible and can be u

Jan Kotek 4.6k Jan 1, 2023
Benchmark App to compare different storage libraries (MMKV, AsyncStorage, WatermelonDB, RealmDB, SQLite)

Storage Benchmarks This is a benchmark app to compare popular storage solutions for React Native. It's running React Native 0.68, with Hermes enabled.

Marc Rousavy 25 Dec 15, 2022
A simple-to-use storage ORM supporting several databases for Java.

Storage Handler This is a library based off of my old storage handler within my queue revamp. It's for easy storage handling for multiple platforms. N

NV6 7 Jun 22, 2022
SQL tasarım komutları ve Backend yazıldı. Projeye yıldız Vermeyi Unutmayın 🚀 Teşekkürler! ❤️

HumanResourcesManagementSystem-HRMS SQL tasarım komutları ve Backend yazıldı. Projeye yıldız Vermeyi Unutmayın ?? Teşekkürler! ❤️ insan kaynakları yön

samet akca 7 Nov 6, 2022
Sample Android App for WebRTC with Firebase as backend

Android WebRTC Firebase Simple Demo App for Android WebRTC video call using Firebase Realtime Database as Signalling server. Prerequisites Firebase Ac

Devesh Chaudhari 19 Dec 17, 2022
A Slimefun4 addon that adds a new storage solution for mass and organised storage without harsh performance.

Networks is a Slimefun4 addon that brings a simple yet powerful item storage and movement network that works along side cargo. Network Grid / Crafting

null 17 Jan 7, 2023
JDBC driver for ClickHouse

This is a basic and restricted implementation of jdbc driver for ClickHouse. It has support of a minimal subset of features to be usable.

ClickHouse 1.1k Jan 1, 2023