JanusGraph / JanusGraph/janusgraph
Implement getMultiSlices method for HBase storage backend
- 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
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