Visitar URL original
Feat/2498 grpc protocol by robfrank · Pull Request #2499 · ArcadeData/arcadedb · GitHub
Skip to content

Feat/2498 grpc protocol - #2499

Merged
robfrank merged 40 commits into
mainfrom
feat/2498-grpc-protocol
Sep 11, 2025
Merged

robfrank merged 40 commits into
mainfrom
feat/2498-grpc-protocol

Conversation

@robfrank

@robfrank robfrank commented Sep 11, 2025 •

Copy link
Copy Markdown
Collaborator

This is just a copy of #2462

What does this PR do?

This PR introduces full gRPC support for ArcadeDB, providing a strongly-typed, high-performance API for remote access to the database.

Key highlights include:

  • Streaming query execution with multiple retrieval modes:

    • CURSOR – existing behavior, iterating and streaming results as they are retrieved.
    • MATERIALIZE_ALL – materializes all results before streaming in batches.
    • PAGED – reissues queries per batch using LIMIT/SKIP for efficient paging.
  • Insert operations:

    • BulkInsert – single request for large batch inserts.
    • InsertStream – client-streaming bulk insert with server-side batching and acknowledgements.
    • InsertBidirectional – full duplex insert mode with per-batch acknowledgements and commit/rollback control.
  • Record operations:

    • Create, update, and lookup records with schema-aware property handling (including embedded and list properties).
  • Transaction support:

    • Added TransactionContext flags for begin, commit, and rollback to coordinate transactional operations across requests.
    • Enhanced type conversion utilities for safe proto ↔︎ Java object mapping, including embedded documents and collections.
  • Client-side API:

    • Full client-side implementation in RemoteGrpcDatabase with a simple, extensible API.

Motivation

  • To provide a native, efficient, and type-safe remote API for ArcadeDB that goes beyond REST/HTTP performance and reliability limitations.
  • To support streaming use cases and bulk data ingestion for high-volume workloads.
  • To align ArcadeDB with modern distributed and reactive application architectures where gRPC is the standard for service-to-service communication.
  • To improve developer experience with generated client stubs and auto-completion.

Related issues

N/A


Additional Notes

I don't yet have a set of client-side tests. These will be provided shortly.


Checklist

  • mvn -DskipTests install
  • Create a Docker image with mvn clean package -Pdocker in the package module

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

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add grpc protocol wrapper

3 participants