JanusGraph / JanusGraph/janusgraph

Implement getMultiSlices method for HBase storage backend

Open
#3,864 0 comments 0 reactions 0 assignees View on GitHub
kind/performance storage/hbase
Dominant language
Java
Stars
5.8k
Forks
1.2k
Avg merge
13h 53m
Merged PRs (30d)
6

Description

Currently `HBaseKeyColumnValueStore` doesn't implement a new multi-slices method `Map> getMultiSlices(MultiKeysQueryGroups multiKeysQueryGroups, StoreTransaction txh)`.
It means that HBase storage backend executes each Slice query sequentially instead of doing so in parallel.
Thus, the performance of using HBase storage backend for multi-slice queries might be affected.

Ideally `HBaseKeyColumnValueStore` would need to overwrite a default `getMultiSlices` implementation with the one which queries each Slice query in parallel using either a thread pool, asynchronous execution, or grouping of multiple slices together.
If so, HBase performance should quite improve for multi-slice scenarios (i.e. for queries like `.valueMap("foo", "bar")`, `.has("foo", "bar").has("bar", "foo")`, `out("foo", "bar")`, etc.).

Contributor guide

Open the contributing guide

Research direction

Start by locating HBaseKeyColumnValueStore and the default getMultiSlices implementation, then trace how MultiKeysQueryGroups and SliceQuery are handled. Decide on an appropriate parallel or grouped execution approach, and consider the multi-slice scenarios described in the issue as the completion criteria.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
databases, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.