Skip to content

docs: add Apache Wayang GSoC 2026 JDBC driver blog - #128

Merged
zkaoudi merged 8 commits into
apache:mainfrom
makarandhinge:main
Aug 18, 2026
Merged

zkaoudi merged 8 commits into
apache:mainfrom
makarandhinge:main

Conversation

@makarandhinge

Copy link
Copy Markdown
Contributor

No description provided.

@kbeedkar kbeedkar left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pls see one comment regarding Before and After

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This before and after could be a bit misleading. The before architecture is still relevant so the JDBC driver is not replacing the "Before" architecture.

@makarandhinge
makarandhinge requested a review from kbeedkar August 8, 2026 13:33

@zkaoudi zkaoudi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @makarandhinge, thank you for the detailed blog post. I enjoyed reading it and especially I liked the figures.
I have marked some minor issues inline.

One main thing that was confusing to me was the terminology used. Terms such as JDBC driver, JDBC client, JDBC server were used without clear separation. In fact, I think most of the text uses the term JDBC driver to mean JDBC client, if I'm not mistaken. JDBC driver should be the entire implementation that consists of a client, a server and a protocol to communicate. @kbeedkar Any thoughts on that?

As part of Google Summer of Code 2026, I implemented a JDBC driver for Apache Wayang, enabling Java applications to interact with Wayang through the standard JDBC API.

<div style={{textAlign: 'center'}}>
<img width="90%" alt="Apache Wayang JDBC driver project hero image" src="/img/blog/wayang-jdbc/hero-image.png" />

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in this file, why "JDBC server" is a separate box? Shouldn't it be part of the Wayang JDBC driver? Maybe at this stage you don't need this box at all.

<img width="90%" alt="Apache Wayang JDBC driver project hero image" src="/img/blog/wayang-jdbc/hero-image.png" />
</div>

Apache Wayang provides a unified way to express and execute data processing workloads across different execution platforms. This project introduces a JDBC interface around Wayang's SQL capabilities, separating the standard JDBC client experience from the underlying Wayang execution system.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would replace "SQL capabilities" with "SQL API", as capabilities can also be seen as the SQL platforms we support.

Also JDBC client is unclear what it means here. So either you change it or introduce the term or visualize it in the figure before.


JDBC is the standard database interface for Java applications. It provides familiar concepts such as connections, statements, result sets, and metadata, which many Java developers already understand.

Apache Wayang already provides SQL capabilities, but the missing piece was a standard JDBC interface for external applications. This project addresses that gap by making Wayang accessible through the JDBC API without requiring applications to depend directly on Wayang-specific APIs.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"SQL capabilities" --> "an SQL API"

Comment thread blog/2026-08-08-gsoc-2026-wayang-jdbc-driver.md

The JDBC layer therefore acts as an integration boundary: applications interact through a standard database interface, while Wayang remains responsible for SQL processing, optimization, and execution across its supported platforms.

To make this possible, the project separates the JDBC client from the Wayang execution environment through a set of components that work together.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again it's not clear what is JDBC server and what is JDBC client here. This needs to be clarified above or in the first figure.


## Architecture

The JDBC implementation is organized into separate components so that the JDBC-facing API, communication protocol, server-side request handling, and Wayang execution remain independently manageable.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"The JDBC implementation" --> "The JDBC driver implementation"

It's important this detail, because we also have the JDBC template as platforms and it can be confusing what we mean.


Apache Wayang remains responsible for the actual SQL processing. The JDBC layer does not replace Wayang's SQL execution system; it provides a standard entry point into it. Once the server passes a query into Wayang's SQL API, Wayang handles planning, optimization, and execution.

The key communication boundary is between the JDBC driver and the JDBC server:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

by "JDBC driver" you mean "JDBC client"?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would say that driver is the entire implementation which consists of the client, the protocol, and the server


The JDBC implementation was validated across the client, protocol, server, and Wayang integration layers. Testing focused on JDBC behavior, request and response handling, query execution, result and metadata processing, error handling, and resource lifecycle to ensure that the complete flow works consistently from the application to Wayang and back.

<div style={{textAlign: 'center'}}>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe this figure is not required. It doesn't add much to the text.


### 3. What the demo shows

This demo helps demonstrate the idea that Wayang is not a database and does not store the data itself. The CSV files remain in the data folder, while the demo shows how they can be treated as logical SQL-style tables such as `fs.heart_disease_risk_2026`.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can't the demo actually execute an SQL query against these datasets?


This provides a foundation for making Apache Wayang easier to integrate with Java applications and future JDBC-compatible tooling.

Future work can continue in a few areas:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This part felt repetitive as there is a "future improvements" part above

@makarandhinge

Copy link
Copy Markdown
Contributor Author

Hi @zkaoudi ,

Thank you for the review. I have addressed the inline comments and clarified the JDBC driver, client, server, and protocol terminology.

I did not mention Python because it requires a JDBC bridge, and this integration has not yet been tested or officially supported.

@makarandhinge
makarandhinge requested a review from zkaoudi August 17, 2026 19:18
kbeedkar
kbeedkar previously approved these changes Aug 18, 2026

@kbeedkar kbeedkar left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

```text
wayang-jdbc/
├── wayang-jdbc-driver/

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs to be replaced with wayang-jdbc-client

**Decision:** The client-side JDBC layer and JDBC server communicate through a defined TCP protocol using length-prefixed JSON messages.

```text
JDBC Driver

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

JDBC Client

```text
Java Application
JDBC Driver

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

JDBC Client


Each `ResultSet.next()` does not execute the SQL query again. The query is executed once, and later fetches retrieve additional pages from the server-side cursor.

> The JDBC application only sees the standard JDBC interface. The driver, protocol, and server handle the communication and lifecycle details, while Apache Wayang remains responsible for SQL processing and execution.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"The driver, protocol, and server" --> "The client-side layer, protocol, and server"

@zkaoudi
zkaoudi merged commit 9801fde into apache:main Aug 18, 2026
1 check passed
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.

3 participants