SlideShare a Scribd company logo
Copyright © 2019 Oracle and/or its affiliates.
Nonblocking Database Access
in Helidon SE
Oracle
September 16, 2019
Dmitry Kornilov /Tomas Langer
The following is intended to outline our general product direction. It is intended for information purposes only,
and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or
functionality, and should not be relied upon in making purchasing decisions.The development, release,
timing, and pricing of any features or functionality described for Oracle’s products may change and remains at
the sole discretion of Oracle Corporation.
Statements in this presentation relating to Oracle’s future plans, expectations, beliefs, intentions and prospects
are “forward-looking statements” and are subject to material risks and uncertainties. A detailed discussion of
these factors and other risks that affect our business is contained in Oracle’s Securities and Exchange
Commission (SEC) filings, including our most recent reports on Form 10-K and Form 10-Q under the heading
“Risk Factors.”These filings are available on the SEC’s website or on Oracle’s website
at http://www.oracle.com/investor. All information in this presentation is current as of September 2019 and
Oracle undertakes no duty to update any statement in light of new information or future events.
Safe Harbor
Copyright © 2019 Oracle and/or its affiliates.
Copyright © 2019 Oracle and/or its affiliates.
Dmitry Kornilov
Senior Product Development Manager
Oracle
Copyright © 2019 Oracle and/or its affiliates.
Tomas Langer
Helidon Architect
Oracle
• Introduction to Helidon
• Helidon DB Client
• Demo
• Q & A
Copyright © 2019 Oracle and/or its affiliates.
Agenda
Copyright © 2019 Oracle and/or its affiliates.
Helidon Introduction
Copyright © 2019 Oracle and/or its affiliates.
Helidon (Χελιδόνι) = Swallow (Greek)
Copyright © 2019 Oracle and/or its affiliates.
A set of Java libraries
for developing microservices
Project Helidon
• Open
• Innovative
• Support standards
• Supported active project
Copyright © 2019 Oracle and/or its affiliates.
Open Source
• Hosted on GitHub
• https://github.com/oracle/helidon
• Apache 2.0 License
Copyright © 2019 Oracle and/or its affiliates.
Supported Active Project
• Open Source support
• Web Site with guides and tutorials: https://helidon.io
• Public Slack channel: https://helidon.slack.com
• GitHub issues tracker: https://github.com/oracle/helidon/issues
• Management has committed to commercial support of Helidon
• AnyWebLogic licensed customer is automatically supported for
Helidon use
Copyright © 2019 Oracle and/or its affiliates.
Landscape
Copyright © 2019 Oracle and/or its affiliates.
Copyright © 2019 Oracle and/or its affiliates.
• Microframework
• Tiny Footprint
• Functional style
• Reactive
• Transparent
• MicroProfile 3.0
• Small Footprint
• Declarative style
• Dependency Injection
• CDI, JAX-RS, JSON-P/B
Copyright © 2019 Oracle and/or its affiliates.
Routing routing =
Routing.builder()
.get("/hello", (req, res) ->
res.send("Hello World"))
.build();
WebServer.create(routing)
.start();
@Path("hello")
public class HelloWorld {
@GET
public String hello() {
return "Hello World";
}
}
Copyright © 2019 Oracle and/or its affiliates.
Helidon SE Components
Reactive Web
Server
Config
Security Tracing
Metrics
Health Check gRPC
MP
MP
MP
MP
MP
MP
Helidon DB Client
Copyright © 2019 Oracle and/or its affiliates.
Helidon DB Client
Database access in Helidon SE
• Without Helidon DB Client...
• JDBC and most no-SQL drivers are blocking
• Backpressure implementation is complicated
• Support for tracing, metrics and health has to be programmed
• Configuration specific for each driver
Copyright © 2019 Oracle and/or its affiliates.
Helidon DB Client – Reactive
• Non-blocking
• "native" if supported by driver (MongoDb, Cassandra and Redis have
reactive driver!)
• Using an executor service when wrapping a blocking driver (e.g. JDBC)
• Flow API
• Uses Flow.Publisher and Flow.Subscriber to process streams of data
• Backpressure
• records are read from the database only when requested by consumer
• in Helidon, this is propagated all the way to theTCP layer
Copyright © 2019 Oracle and/or its affiliates.
Helidon DB Client - Observable
• Implemented as configurable interceptors
• all, or named statements ("select-all"), or statements by type (Insert,
Update, Delete...)
• either in a builder, or in configuration file
• Tracing
• Adds a trace to OpenTracing
• Metrics
• Counter, Meter,Timer
• Health
• "ping" operation for liveliness health check
Copyright © 2019 Oracle and/or its affiliates.
Helidon DB Client - Configurable
• Statements in configuration
• All statements are named (including ad-hoc)
• Does not define a new query language
• Simple to modify a statement when needed
• Metrics, Health Checks in configuration
• Connectivity and database type in configuration
• Simple to switch to a different database
Copyright © 2019 Oracle and/or its affiliates.
Helidon DB Client - Databases
• JDBC
• Using standard JDBC APIs, so any JDBC driver will work
• Support for local transactions
• MongoDB
• Using reactive MongoDB driver
• Basic operations usable for relational and other types of DBs
• CRUD operations
Copyright © 2019 Oracle and/or its affiliates.
Helidon DB Client Configuration
# JDBC - MySQL
db:
source: "jdbc"
url: "jdbc:mysql://127.0.0.1:3306/pokemon?useSSL=false"
statements:
insert-mon: "INSERT INTO pokemons VALUES(:name, :type)"
# Mongo database:
db:
source: "mongoDb"
url: "mongodb://127.0.0.1:27017/pokemon"
statements:
insert-mon: '{"collection": "pokemons",
"value": {"_id": $name, "type": $type}}'
Copyright © 2019 Oracle and/or its affiliates.
Helidon DB Client Usage
DbClient dbClient = DbClient.create(config.get("db"));
//...
private void insertPokemon(ServerResponse response, Pokemon pokemon) {
dbClient.execute(exec -> exec
.createNamedInsert("insert-mon")
.namedParam(pokemon)
.execute())
.thenAccept(count -> response.send("Inserted: " + count + " values"))
.exceptionally(throwable -> sendError(throwable, response));
}
Copyright © 2019 Oracle and/or its affiliates.
Copyright © 2019 Oracle and/or its affiliates.
Demo
Demo
Branch on Helidon: 581-helidon-db
https://github.com/oracle/helidon/tree/581-helidon-db
Copyright © 2019 Oracle and/or its affiliates.
Copyright © 2019 Oracle and/or its affiliates.
Q & A
Helidon-related Sessions on CodeOne 2019
Monday, Sep 16
01:30 PM - 02:15 PM
Copyright © 2019 Oracle and/or its affiliates.
Helidon Flies Faster on GraalVM
Moscone South - Room 203
05:00 PM - 07:00 PM Hands on Lab: Building Microservices
with Helidon
MosconeWest - Room 3024B
Thursday, Sep 19
09:00 AM - 09:45 AM Helidon MicroProfile: Managing
Persistence with JPA
Moscone South - Room 206
12:15 PM - 01:00 PM Migrating a Single Monolithic
Application to Microservices
Moscone South - Room 204
Helidon-related Sessions on OOW 2019
Tuesday, Sep 17
02:00 PM - 02:20 PM
Copyright © 2019 Oracle and/or its affiliates.
Building Helidon Applications
The Exchange (Moscone South) -Theater 4
Wednesday, Sep 18
09:00 AM - 09:45 AM BuildingCloud Native Applications with
Helidon
Moscone South - Room 210
Thank You
Copyright © 2019 Oracle and/or its affiliates.
Helidon Team
September 16, 2019
Dmitry Kornilov /Tomas Langer

More Related Content

What's hot (20)

PDF
OpenvSwitchの落とし穴
Takashi Naito
 
PPTX
Applying Network Analytics in KYC
Neo4j
 
PPTX
MLflowで学ぶMLOpsことはじめ
Kenichi Sonoda
 
PDF
まずやっとくPostgreSQLチューニング
Kosuke Kida
 
PDF
SQL serverのデータ破損に備える
okumar savurou
 
PDF
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
NTT DATA Technology & Innovation
 
PPTX
Azure Synapse Analytics Overview (r2)
James Serra
 
PDF
MySQL 5.7にやられないためにおぼえておいてほしいこと
yoku0825
 
PPTX
The columnar roadmap: Apache Parquet and Apache Arrow
Julien Le Dem
 
PDF
#살아있다 #자프링외길12년차 #코프링2개월생존기
Arawn Park
 
PDF
Scaling Data and ML with Apache Spark and Feast
Databricks
 
PDF
[Cloud OnAir] GCP で構築するデータ分析基盤の最新情報をご紹介! 2018年11月15日 放送
Google Cloud Platform - Japan
 
PDF
Oracle Cloud Infrastructure:2023年5月度サービス・アップデート
オラクルエンジニア通信
 
PDF
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
PDF
Oracle GoldenGate入門
オラクルエンジニア通信
 
PDF
Apache Arrow: Open Source Standard Becomes an Enterprise Necessity
Wes McKinney
 
PPTX
Data Engineer's Lunch #54: dbt and Spark
Anant Corporation
 
PDF
Presto As A Service - Treasure DataでのPresto運用事例
Taro L. Saito
 
PDF
Oracle Cloud Infrastructure:2022年9月度サービス・アップデート
オラクルエンジニア通信
 
OpenvSwitchの落とし穴
Takashi Naito
 
Applying Network Analytics in KYC
Neo4j
 
MLflowで学ぶMLOpsことはじめ
Kenichi Sonoda
 
まずやっとくPostgreSQLチューニング
Kosuke Kida
 
SQL serverのデータ破損に備える
okumar savurou
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
NTT DATA Technology & Innovation
 
Azure Synapse Analytics Overview (r2)
James Serra
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
yoku0825
 
The columnar roadmap: Apache Parquet and Apache Arrow
Julien Le Dem
 
#살아있다 #자프링외길12년차 #코프링2개월생존기
Arawn Park
 
Scaling Data and ML with Apache Spark and Feast
Databricks
 
[Cloud OnAir] GCP で構築するデータ分析基盤の最新情報をご紹介! 2018年11月15日 放送
Google Cloud Platform - Japan
 
Oracle Cloud Infrastructure:2023年5月度サービス・アップデート
オラクルエンジニア通信
 
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
Oracle GoldenGate入門
オラクルエンジニア通信
 
Apache Arrow: Open Source Standard Becomes an Enterprise Necessity
Wes McKinney
 
Data Engineer's Lunch #54: dbt and Spark
Anant Corporation
 
Presto As A Service - Treasure DataでのPresto運用事例
Taro L. Saito
 
Oracle Cloud Infrastructure:2022年9月度サービス・アップデート
オラクルエンジニア通信
 

Similar to Nonblocking Database Access in Helidon SE (20)

PPTX
Oracle GoldenGate on Docker
Bobby Curtis
 
PPTX
Building Cloud-Native Applications with Helidon
Dmitry Kornilov
 
PDF
Node.js and Oracle Database: New Development Techniques
Christopher Jones
 
PPTX
Building microservice for api with helidon and cicd pipeline
DonghuKIM2
 
PDF
10thMeetup-20190420-REST API Design Principles 되새기기
DongHee Lee
 
PDF
Oracle NoSQL
Oracle Korea
 
PDF
Turning Relational Database Tables into Hadoop Datasources by Kuassi Mensah
Data Con LA
 
PPTX
Oracle database 12c_and_DevOps
Maria Colgan
 
PDF
API Design Principles Essential 
Oracle Korea
 
PDF
UNYOUG - APEX 19.2 New Features
msewtz
 
PDF
Best Practices for the Most Impactful Oracle Database 18c and 19c Features
Markus Michalewicz
 
PPTX
A Step by Step Introduction to the MySQL Document Store
Dave Stokes
 
PDF
Oracle SOA Suite Everywhere
Rupesh Das
 
PDF
Docker Compose Setup for MySQL InnoDB Cluster
Balasubramanian Kandasamy
 
PDF
Confoo 202 - MySQL Group Replication and ReplicaSet
Dave Stokes
 
PDF
Extending Enterprise Applications to mobile interfaces-Final
Rohit Dhamija
 
PDF
2019 dev-marc sewtz-session-keynote-oracle_apex_19__neue_features_und_roadmap...
Mohamedcpcbma
 
PDF
MySQL InnoDB Cluster: Management and Troubleshooting with MySQL Shell
Miguel Araújo
 
PPT
ECAD 231 Functional Overview
Zero Wait-State
 
PDF
MV2ADB - Move to Oracle Autonomous Database in One-click
Ruggero Citton
 
Oracle GoldenGate on Docker
Bobby Curtis
 
Building Cloud-Native Applications with Helidon
Dmitry Kornilov
 
Node.js and Oracle Database: New Development Techniques
Christopher Jones
 
Building microservice for api with helidon and cicd pipeline
DonghuKIM2
 
10thMeetup-20190420-REST API Design Principles 되새기기
DongHee Lee
 
Oracle NoSQL
Oracle Korea
 
Turning Relational Database Tables into Hadoop Datasources by Kuassi Mensah
Data Con LA
 
Oracle database 12c_and_DevOps
Maria Colgan
 
API Design Principles Essential 
Oracle Korea
 
UNYOUG - APEX 19.2 New Features
msewtz
 
Best Practices for the Most Impactful Oracle Database 18c and 19c Features
Markus Michalewicz
 
A Step by Step Introduction to the MySQL Document Store
Dave Stokes
 
Oracle SOA Suite Everywhere
Rupesh Das
 
Docker Compose Setup for MySQL InnoDB Cluster
Balasubramanian Kandasamy
 
Confoo 202 - MySQL Group Replication and ReplicaSet
Dave Stokes
 
Extending Enterprise Applications to mobile interfaces-Final
Rohit Dhamija
 
2019 dev-marc sewtz-session-keynote-oracle_apex_19__neue_features_und_roadmap...
Mohamedcpcbma
 
MySQL InnoDB Cluster: Management and Troubleshooting with MySQL Shell
Miguel Araújo
 
ECAD 231 Functional Overview
Zero Wait-State
 
MV2ADB - Move to Oracle Autonomous Database in One-click
Ruggero Citton
 
Ad

More from Dmitry Kornilov (18)

PPTX
Helidon Nima - Loom based microserfice framework.pptx
Dmitry Kornilov
 
PPTX
Jakarta EE: Today and Tomorrow
Dmitry Kornilov
 
PPTX
JSON Support in Jakarta EE: Present and Future
Dmitry Kornilov
 
PPTX
Building cloud native microservices with project Helidon
Dmitry Kornilov
 
PPTX
Developing cloud-native microservices using project Helidon
Dmitry Kornilov
 
PPTX
From Java EE to Jakarta EE
Dmitry Kornilov
 
PPTX
Helidon: Java Libraries for Writing Microservices
Dmitry Kornilov
 
PPTX
Introduction to Yasson
Dmitry Kornilov
 
PPTX
JSON Support in Java EE 8
Dmitry Kornilov
 
PPTX
Adopt-a-JSR session (JSON-B/P)
Dmitry Kornilov
 
PPTX
Configuration for Java EE: Config JSR and Tamaya
Dmitry Kornilov
 
PPTX
JSON Support in Java EE 8
Dmitry Kornilov
 
PPTX
Java EE for the Cloud
Dmitry Kornilov
 
PPTX
Configuration for Java EE and the Cloud
Dmitry Kornilov
 
PPTX
What's new in the Java API for JSON Binding
Dmitry Kornilov
 
PPTX
JSON-B for CZJUG
Dmitry Kornilov
 
PDF
JSONB introduction and comparison with other frameworks
Dmitry Kornilov
 
PDF
What’s new in JSR 367 Java API for JSON Binding
Dmitry Kornilov
 
Helidon Nima - Loom based microserfice framework.pptx
Dmitry Kornilov
 
Jakarta EE: Today and Tomorrow
Dmitry Kornilov
 
JSON Support in Jakarta EE: Present and Future
Dmitry Kornilov
 
Building cloud native microservices with project Helidon
Dmitry Kornilov
 
Developing cloud-native microservices using project Helidon
Dmitry Kornilov
 
From Java EE to Jakarta EE
Dmitry Kornilov
 
Helidon: Java Libraries for Writing Microservices
Dmitry Kornilov
 
Introduction to Yasson
Dmitry Kornilov
 
JSON Support in Java EE 8
Dmitry Kornilov
 
Adopt-a-JSR session (JSON-B/P)
Dmitry Kornilov
 
Configuration for Java EE: Config JSR and Tamaya
Dmitry Kornilov
 
JSON Support in Java EE 8
Dmitry Kornilov
 
Java EE for the Cloud
Dmitry Kornilov
 
Configuration for Java EE and the Cloud
Dmitry Kornilov
 
What's new in the Java API for JSON Binding
Dmitry Kornilov
 
JSON-B for CZJUG
Dmitry Kornilov
 
JSONB introduction and comparison with other frameworks
Dmitry Kornilov
 
What’s new in JSR 367 Java API for JSON Binding
Dmitry Kornilov
 
Ad

Recently uploaded (20)

PPTX
Milwaukee Marketo User Group - Summer Road Trip: Mapping and Personalizing Yo...
bbedford2
 
PDF
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
PDF
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
PDF
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
PDF
How to Hire AI Developers_ Step-by-Step Guide in 2025.pdf
DianApps Technologies
 
PPTX
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
PPTX
AEM User Group: India Chapter Kickoff Meeting
jennaf3
 
PDF
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
PDF
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
PDF
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
PPTX
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
PDF
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
PPTX
Foundations of Marketo Engage - Powering Campaigns with Marketo Personalization
bbedford2
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
PPTX
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
PPTX
Agentic Automation Journey Series Day 2 – Prompt Engineering for UiPath Agents
klpathrudu
 
PDF
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
PDF
IDM Crack with Internet Download Manager 6.42 Build 43 with Patch Latest 2025
bashirkhan333g
 
Milwaukee Marketo User Group - Summer Road Trip: Mapping and Personalizing Yo...
bbedford2
 
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
How to Hire AI Developers_ Step-by-Step Guide in 2025.pdf
DianApps Technologies
 
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
AEM User Group: India Chapter Kickoff Meeting
jennaf3
 
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
Foundations of Marketo Engage - Powering Campaigns with Marketo Personalization
bbedford2
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
Agentic Automation Journey Series Day 2 – Prompt Engineering for UiPath Agents
klpathrudu
 
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
IDM Crack with Internet Download Manager 6.42 Build 43 with Patch Latest 2025
bashirkhan333g
 

Nonblocking Database Access in Helidon SE

  • 1. Copyright © 2019 Oracle and/or its affiliates. Nonblocking Database Access in Helidon SE Oracle September 16, 2019 Dmitry Kornilov /Tomas Langer
  • 2. The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions.The development, release, timing, and pricing of any features or functionality described for Oracle’s products may change and remains at the sole discretion of Oracle Corporation. Statements in this presentation relating to Oracle’s future plans, expectations, beliefs, intentions and prospects are “forward-looking statements” and are subject to material risks and uncertainties. A detailed discussion of these factors and other risks that affect our business is contained in Oracle’s Securities and Exchange Commission (SEC) filings, including our most recent reports on Form 10-K and Form 10-Q under the heading “Risk Factors.”These filings are available on the SEC’s website or on Oracle’s website at http://www.oracle.com/investor. All information in this presentation is current as of September 2019 and Oracle undertakes no duty to update any statement in light of new information or future events. Safe Harbor Copyright © 2019 Oracle and/or its affiliates.
  • 3. Copyright © 2019 Oracle and/or its affiliates. Dmitry Kornilov Senior Product Development Manager Oracle
  • 4. Copyright © 2019 Oracle and/or its affiliates. Tomas Langer Helidon Architect Oracle
  • 5. • Introduction to Helidon • Helidon DB Client • Demo • Q & A Copyright © 2019 Oracle and/or its affiliates. Agenda
  • 6. Copyright © 2019 Oracle and/or its affiliates. Helidon Introduction
  • 7. Copyright © 2019 Oracle and/or its affiliates. Helidon (Χελιδόνι) = Swallow (Greek)
  • 8. Copyright © 2019 Oracle and/or its affiliates. A set of Java libraries for developing microservices
  • 9. Project Helidon • Open • Innovative • Support standards • Supported active project Copyright © 2019 Oracle and/or its affiliates.
  • 10. Open Source • Hosted on GitHub • https://github.com/oracle/helidon • Apache 2.0 License Copyright © 2019 Oracle and/or its affiliates.
  • 11. Supported Active Project • Open Source support • Web Site with guides and tutorials: https://helidon.io • Public Slack channel: https://helidon.slack.com • GitHub issues tracker: https://github.com/oracle/helidon/issues • Management has committed to commercial support of Helidon • AnyWebLogic licensed customer is automatically supported for Helidon use Copyright © 2019 Oracle and/or its affiliates.
  • 12. Landscape Copyright © 2019 Oracle and/or its affiliates.
  • 13. Copyright © 2019 Oracle and/or its affiliates. • Microframework • Tiny Footprint • Functional style • Reactive • Transparent • MicroProfile 3.0 • Small Footprint • Declarative style • Dependency Injection • CDI, JAX-RS, JSON-P/B
  • 14. Copyright © 2019 Oracle and/or its affiliates. Routing routing = Routing.builder() .get("/hello", (req, res) -> res.send("Hello World")) .build(); WebServer.create(routing) .start(); @Path("hello") public class HelloWorld { @GET public String hello() { return "Hello World"; } }
  • 15. Copyright © 2019 Oracle and/or its affiliates. Helidon SE Components Reactive Web Server Config Security Tracing Metrics Health Check gRPC MP MP MP MP MP MP Helidon DB Client
  • 16. Copyright © 2019 Oracle and/or its affiliates. Helidon DB Client
  • 17. Database access in Helidon SE • Without Helidon DB Client... • JDBC and most no-SQL drivers are blocking • Backpressure implementation is complicated • Support for tracing, metrics and health has to be programmed • Configuration specific for each driver Copyright © 2019 Oracle and/or its affiliates.
  • 18. Helidon DB Client – Reactive • Non-blocking • "native" if supported by driver (MongoDb, Cassandra and Redis have reactive driver!) • Using an executor service when wrapping a blocking driver (e.g. JDBC) • Flow API • Uses Flow.Publisher and Flow.Subscriber to process streams of data • Backpressure • records are read from the database only when requested by consumer • in Helidon, this is propagated all the way to theTCP layer Copyright © 2019 Oracle and/or its affiliates.
  • 19. Helidon DB Client - Observable • Implemented as configurable interceptors • all, or named statements ("select-all"), or statements by type (Insert, Update, Delete...) • either in a builder, or in configuration file • Tracing • Adds a trace to OpenTracing • Metrics • Counter, Meter,Timer • Health • "ping" operation for liveliness health check Copyright © 2019 Oracle and/or its affiliates.
  • 20. Helidon DB Client - Configurable • Statements in configuration • All statements are named (including ad-hoc) • Does not define a new query language • Simple to modify a statement when needed • Metrics, Health Checks in configuration • Connectivity and database type in configuration • Simple to switch to a different database Copyright © 2019 Oracle and/or its affiliates.
  • 21. Helidon DB Client - Databases • JDBC • Using standard JDBC APIs, so any JDBC driver will work • Support for local transactions • MongoDB • Using reactive MongoDB driver • Basic operations usable for relational and other types of DBs • CRUD operations Copyright © 2019 Oracle and/or its affiliates.
  • 22. Helidon DB Client Configuration # JDBC - MySQL db: source: "jdbc" url: "jdbc:mysql://127.0.0.1:3306/pokemon?useSSL=false" statements: insert-mon: "INSERT INTO pokemons VALUES(:name, :type)" # Mongo database: db: source: "mongoDb" url: "mongodb://127.0.0.1:27017/pokemon" statements: insert-mon: '{"collection": "pokemons", "value": {"_id": $name, "type": $type}}' Copyright © 2019 Oracle and/or its affiliates.
  • 23. Helidon DB Client Usage DbClient dbClient = DbClient.create(config.get("db")); //... private void insertPokemon(ServerResponse response, Pokemon pokemon) { dbClient.execute(exec -> exec .createNamedInsert("insert-mon") .namedParam(pokemon) .execute()) .thenAccept(count -> response.send("Inserted: " + count + " values")) .exceptionally(throwable -> sendError(throwable, response)); } Copyright © 2019 Oracle and/or its affiliates.
  • 24. Copyright © 2019 Oracle and/or its affiliates. Demo
  • 25. Demo Branch on Helidon: 581-helidon-db https://github.com/oracle/helidon/tree/581-helidon-db Copyright © 2019 Oracle and/or its affiliates.
  • 26. Copyright © 2019 Oracle and/or its affiliates. Q & A
  • 27. Helidon-related Sessions on CodeOne 2019 Monday, Sep 16 01:30 PM - 02:15 PM Copyright © 2019 Oracle and/or its affiliates. Helidon Flies Faster on GraalVM Moscone South - Room 203 05:00 PM - 07:00 PM Hands on Lab: Building Microservices with Helidon MosconeWest - Room 3024B Thursday, Sep 19 09:00 AM - 09:45 AM Helidon MicroProfile: Managing Persistence with JPA Moscone South - Room 206 12:15 PM - 01:00 PM Migrating a Single Monolithic Application to Microservices Moscone South - Room 204
  • 28. Helidon-related Sessions on OOW 2019 Tuesday, Sep 17 02:00 PM - 02:20 PM Copyright © 2019 Oracle and/or its affiliates. Building Helidon Applications The Exchange (Moscone South) -Theater 4 Wednesday, Sep 18 09:00 AM - 09:45 AM BuildingCloud Native Applications with Helidon Moscone South - Room 210
  • 29. Thank You Copyright © 2019 Oracle and/or its affiliates. Helidon Team September 16, 2019 Dmitry Kornilov /Tomas Langer