docs: add Apache Wayang GSoC 2026 JDBC driver blog - #128
Conversation
kbeedkar
left a comment
There was a problem hiding this comment.
Pls see one comment regarding Before and After
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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" /> |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
"SQL capabilities" --> "an SQL API"
|
|
||
| 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. |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
"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: |
There was a problem hiding this comment.
by "JDBC driver" you mean "JDBC client"?
There was a problem hiding this comment.
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'}}> |
There was a problem hiding this comment.
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`. |
There was a problem hiding this comment.
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: |
There was a problem hiding this comment.
This part felt repetitive as there is a "future improvements" part above
|
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. |
| ```text | ||
| wayang-jdbc/ | ||
| │ | ||
| ├── wayang-jdbc-driver/ |
There was a problem hiding this comment.
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 |
| ```text | ||
| Java Application | ||
| ↓ | ||
| JDBC Driver |
|
|
||
| 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. |
There was a problem hiding this comment.
"The driver, protocol, and server" --> "The client-side layer, protocol, and server"
No description provided.