apache / apache/incubator-graphar

[FEATURE][Java] Add dependency-light storage API

Open
#957 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
373
Forks
93
Avg merge
7d 21h
Merged PRs (30d)
7

Description

## Describe the enhancement requested

Add the first, dependency-light byte-storage boundary required by the pure-Java GraphAr reader/writer roadmap. It isolates URI-backed byte access from GraphAr metadata and physical formats so later Parquet and object-store adapters do not leak their dependencies into `graphar-info`.

Component(s): Java

## Scope

- new `graphar-storage-api` module;
- `Storage`, `InputFile`, `OutputFile`, `SeekableInput`, and `PositionOutput` contracts;
- Java 11-safe `ByteBuffer` seek/read/readFully and positional-output semantics;
- contract tests for heap/direct buffers, EOF, invalid seek, and short reads.

## Non-goals

No local, S3, Hadoop, Parquet, Arrow, GraphAr layout, reader, or writer implementation. `graphar-storage-local` is intentionally a follow-up slice after this API is accepted.

## Compatibility and acceptance

The module must add no runtime dependency to `graphar-info`, preserve independent input handles and accurate byte positions, and pass repository pre-commit plus the focused Maven reactor verification.

## Links

Focused subissue of #953; relates to reader/writer umbrella #947 and architecture umbrella #756.

Contributor guide

Open the contributing guide

Research direction

Start with the repository’s module structure and the focused Maven reactor verification, then define the new graphar-storage-api module around the named Storage, InputFile, OutputFile, SeekableInput, and PositionOutput contracts. Read the contract-test requirements for heap/direct buffers, EOF, invalid seeks, and short reads. Done means the Java 11-safe API passes those tests and pre-commit without adding a runtime dependency to graphar-info.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend-api-design
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
64/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.