Skip to content

feat(store): add SQLite storage provider implementation #800#809

Open
RiyaJ6 wants to merge 1 commit into
apache:masterfrom
RiyaJ6:feat/sqlite-store-backend
Open

feat(store): add SQLite storage provider implementation #800#809
RiyaJ6 wants to merge 1 commit into
apache:masterfrom
RiyaJ6:feat/sqlite-store-backend

Conversation

@RiyaJ6

@RiyaJ6 RiyaJ6 commented Jun 29, 2026

Copy link
Copy Markdown

What & Why

Closes #800

As highlighted in the issue, GeaFlow currently lacks a zero external dependency embedded storage option that bridges the gap between Memory (no persistence) and RocksDB (heavyweight). This PR introduces the geaflow-store-sqlite module, providing a lightweight, embedded relational storage backend tailored for single-node, edge,and testing scenarios.

What was done (Addressing "The task")

  1. SPI Registration: Configured SQLiteStoreBuilder and registered it via META-INF/services/org.apache.geaflow.store.IStoreBuilder.
  2. Core Interfaces: Implemented full compliance for IKVStore, IDynamicGraphStore, IStatefulStore and IPushDownStore (including the required getFilterConverter() method).
  3. JDBC Implementation: Created functional SQLite table schemas (graph_vertices, graph_edges, kv_store) and wrapped basic read/write operations using standard JDBC logic.
  4. Build & Quality: Passed all Checkstyle and Apache RAT license header checks. Local module compilation passes flawlessly (mvn clean install).

Current Status vs. "Done When" Criteria (Notes for Reviewers)

  • Builder + core store interfaces implemented; KV and graph reads/writes correct: Completed via JDBC implementation.
  • checkstyle / RAT pass: Completed.
  • ⚠️ Archive/recovery (state versioning): The methods archive(), recovery() and recoveryLatest() are currently stubbed (returning default/null values). Full snapshotting/state-versioning logic will require a follow-up iteration.
  • ⚠️ Passes the shared store tests / adds targeted tests: The shared memory storage test cases were deliberately excluded from this branch to keep the commit clean. Currently skipping tests during the build due to upstream missing classes (e.g., MemoryStoreBuilder in GraphMemoryStoreTest). Targeted SQLite integration tests will be added in a fast-follow iteration once the baseline architecture is approved.

Marking this PR as a functional baseline to get architectural alignment from core maintainers before finalizing the state versioning loop.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add a SQLite / LevelDB store backend

1 participant