SlideShare a Scribd company logo
1 of 68
Download to read offline
/ by Igor Lozynskyi
Building a
Reactive DB driver
with R2DBC
For whom this talk:
/ Want to build reactive apps?
/ Want to have reactive database access?
/ Want lo learn about R2DBC?
/ I assume, you know what Reactive is
Реактивный Хардкор
/ Oleh Dokuka
33
Igor Lozynskyi
Agenda
/ Spring & reactive database access
/ R2DBC
/ Look inside R2DBC driver
Part 1:
Spring & Reactive DB
access
Why Reactive?
/ New frontier for high-efficiency apps
/ Fundamentally non-blocking
/ Paired with asynchronous behaviors
/ Pull-push back pressure
MySQL
DB
MySQL Driver
in ZD service
Why Reactive?
/ New frontier for high-efficiency apps
/ Fundamentally non-blocking
/ Paired with asynchronous behaviors
/ Pull-push back pressure
technology radar vol. 20 by ThoughtWorks
Reactive Programming
does NOT like
blocking threads
Spring (5.0+)
is reactive now
Spring WebClient
Netty
Cloud
Messaging
WebFlux
…
Reactive
Spring Data
MongoDB
Cassandra
Couchbase
Redis
What about SQL?
ADBA R2DBCvs
by Oracle by Pivotal
ADBA
/ New async API for relational data access in Java
/ Implemented with CompletableFuture
/ Uses Java 9’s Flow API
Criticism
/ Does not imply back pressure
/ Has only ADBA-over-JDBC implementation
/ Slow development
/ Authors have neglected Reactive approach for a long time
/ No clear timeline
ADBA
https://www.oracle.com/technetwork/database/application-development/jdbc/
documentation/adba-devnexus-5391648.pdf
Part 2:
R2DBC
R2DBC
https://r2dbc.io
R2DBC Design principles
/ Based on Reactive Streams Types and Patterns
/ Be completely non-blocking, up to the DB
/ Utilize wire-protocol for non-blocking implementations
/ Divide Client API and Driver SPI
/ Shrink Driver SPI
image credits: Pivotal
image credits: Pivotal
JDBC API
/ JDBC has the same API for:
/ Driver authors
/ Human users
/ Inhuman users like JPA, Jdbi, jOOQ, etc.
/ No-one likes using JDBC API
R2DBC SPI
/ ConnectionFactory
/ Connection
/ Statement
/ Result
/ RowMetadata
/ Row
/ Batch
R2DBC SPI - Connection
/ Batch createBatch()
/ Statement createStatement(String sql)
/ Publisher<Void> beginTransaction()
/ Publisher<Void> commitTransaction()
/ Publisher<Void> rollbackTransaction()
/ Publisher<Void> rollbackTransactionToSavepoint(String name)
/ Publisher<Void> setTransactionIsolationLevel(IsolationLevel level)
/ Publisher<Void> createSavepoint(String name)
/ Publisher<Void> releaseSavepoint(String name)
/ Publisher<Void> close()
R2DBC SPI - Statement
/ Statement add()
/ Statement bind(Object identifier, Object value)
/ Statement bindNull(Object identifier, Class<?> type)
/ Publisher<? extends Result> execute()
/ Statement returnGeneratedValues(String... columns)
R2DBC SPI - Result
/ Publisher<Integer> getRowsUpdated()
/ <T> Publisher<T> map(BiFunction<Row, RowMetadata, ? extends T> f)
R2DBC SPI - Row
/ <T> T get(Object identifier, Class<T> type)
SPI: Connection factory
H2ConnectionConfiguration conf = H2ConnectionConfiguration.builder()
.url("mem:db;DB_CLOSE_DELAY=-1;TRACE_LEVEL_FILE=4")
.build();
ConnectionFactory connectionFactory = new H2ConnectionFactory(conf);
SPI: Simple select
connectionFactory
.create()
.flatMapMany(conn ->
conn.createStatement("SELECT currency, price FROM trades")
.execute()
.flatMap(result -> result
.map((row, metadata) -> row.get("currency"))))
SPI: Batch insert
connectionFactory
.create()
.flatMapMany(conn ->
conn.createStatement(
“INSERT INTO trades (currency, market, price) “ +
"VALUES (?, ?, ?)")
.bind(0, "EUR").bind(1, "TD").bind(2, 7.0).add()
.bind(0, "UAH").bind(1, "TX").bind(2, 6.0).add()
.execute())
SPI: Transactions
connectionFactory
.create()
.flatMapMany(conn ->
conn.beginTransaction()
.thenMany(conn.createStatement(
"INSERT INTO trades (currency, market, price) " +
"VALUES (?, ?, ?)")
.bind(0, "UAH").bind(1, "TX").bind(2, "B")
.execute())
.delayUntil(p -> conn.commitTransaction())
.onErrorResume(t -> conn
.rollbackTransaction()
.then(Mono.error(t))))
try-with-resources
image credits: Pivotal
R2DBC Client
R2dbc r2dbcClient = new R2dbc(connectionFactory);
R2DBC Client
r2dbcClient
.withHandle(handle ->
handle.createUpdate(
"INSERT INTO trades (currency, market, price) " +
"VALUES ($1, $2, $3)")
.bind("$1", "UAH").bind("$2", "TX").bind("$3", 3.4)
.execute())
R2DBC Client: Transactions
r2dbcClient
.inTransaction(handle ->
handle.createUpdate(
"INSERT INTO trades (currency, market, price) " +
"VALUES ($1, $2, $3)")
.bind("$1", "UAH").bind("$2", "TX").bind("$3", 3.4)
.execute())
SPI: Transactions
connectionFactory
.create()
.flatMapMany(conn ->
conn.beginTransaction()
.thenMany(conn.createStatement(
"INSERT INTO trades (currency, market, price) " +
"VALUES (?, ?, ?)")
.bind(0, "UAH").bind(1, "TX").bind(2, "B")
.execute())
.delayUntil(p -> conn.commitTransaction())
.onErrorResume(t -> conn
.rollbackTransaction()
.then(Mono.error(t))))
Spring Data Repository
public interface UsSalesR2dbcRepository
extends R2dbcRepository<UsSalesDataDto, String> {
@Query("select * from us_sales_by_districts")
Flux<UsSalesDataDto> findAll();
@Query("select * from us_sales_by_districts, where code=:code")
Mono<UsSalesDataDto> findById(@Param("code") String code);
}
image credits: Pivotal
image credits: Pivotal
R2DBC Drivers
/ PostgreSQL
/ Microsoft SQL Server
/ H2
/ MySQL/MariaDB (by community)
Supported databases
2018 StackOverflow survey
Reactive Spring Data
R2DBC
How
R2DBC drivers
work?
r2dbc-postgres PostgreSQL
wire-protocol
TCP
r2dbc-postgres PostgreSQL
Where is
back pressure?
Portal
Using R2DBC with
Spring Data
public interface UsSalesR2dbcRepository
extends R2dbcRepository<UsSalesDataDto, String> {
@Query("select * from us_sales_by_districts")
Flux<UsSalesDataDto> findAll();
@Query("select * from us_sales_by_districts, where code=:code")
Mono<UsSalesDataDto> findById(@Param("code") String code);
}
Spring Data R2DBC
Spring Data Repository & Transactions?
@Transactional
class TransactionalDatabaseClient
Downsides
of R2DBC
JPA?
/ No Hibernate
/ No EclipseLink
/ No JPA so far?
/ No JPA at all?
Longer Queries
/ DBs rushing to deliver data
/ Back pressure may delay data delivery
Longer Transactions
/ Back pressure may cause more contention
/ JDBC faster then R2DBC
/ R2DBC may impact DB internals
Wire-protocol
/ Should allow data streaming
/ Should allow back pressure
/ Cancellation
/ Implement Reactive Streams semantics
/ Multiplexing?
/ RSocket?
Fun Part:
Demo
App (WebFlux) PostgreSQL
TCP
Reactive Spring Data
R2DBC Driver
R2DBC Pros
/ New and shiny
/ Brings reactive to DB access
/ More active community than ADBA’s
/ Easy to implement drivers (compared to JDBC)
R2DBC Cons
/ Not mature enough (current: 1.0.0.M7)
/ May be beaten by ADBA
/ No JPA (Hibernate/EclipseLink)
/ Reactive approach may not fit SQL at all
Summary
/ ADBA vs R2DBC battle is still going on
/ May soon have reactive DB access
/ Spring Data drives R2DBC
/ Not for production yet!
/ Don’t afraid to try R2DBC!
Takeaways
/ Web on Reactive Stack (Spring Framework)
/ www.r2dbc.io
Q&A
Thank you!
/aigor
/siromaha
/ihor.lozinsky

More Related Content

What's hot

MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and TypescriptMongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and TypescriptMongoDB
 
From Zero to Streaming Healthcare in Production (Alexander Kouznetsov, Invita...
From Zero to Streaming Healthcare in Production (Alexander Kouznetsov, Invita...From Zero to Streaming Healthcare in Production (Alexander Kouznetsov, Invita...
From Zero to Streaming Healthcare in Production (Alexander Kouznetsov, Invita...confluent
 
Data exchange between flex and java script, 2007
Data exchange between flex and java script, 2007Data exchange between flex and java script, 2007
Data exchange between flex and java script, 2007Evgenios Skitsanos
 
Entity Framework Overview
Entity Framework OverviewEntity Framework Overview
Entity Framework Overviewukdpe
 
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Devoxx Belgium 2015
OrientDB - the 2nd generation  of  (Multi-Model) NoSQL - Devoxx Belgium 2015OrientDB - the 2nd generation  of  (Multi-Model) NoSQL - Devoxx Belgium 2015
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Devoxx Belgium 2015Luigi Dell'Aquila
 
Enable GoldenGate Monitoring with OEM 12c/JAgent
Enable GoldenGate Monitoring with OEM 12c/JAgentEnable GoldenGate Monitoring with OEM 12c/JAgent
Enable GoldenGate Monitoring with OEM 12c/JAgentBobby Curtis
 
Synchronize AD and OpenLDAP with LSC
Synchronize AD and OpenLDAP with LSCSynchronize AD and OpenLDAP with LSC
Synchronize AD and OpenLDAP with LSCLDAPCon
 
Easing offline web application development with GWT
Easing offline web application development with GWTEasing offline web application development with GWT
Easing offline web application development with GWTArnaud Tournier
 
Going Offline with Gears And GWT
Going Offline with Gears And GWTGoing Offline with Gears And GWT
Going Offline with Gears And GWTtom.peck
 
SynapseIndia dotnet development ajax client library
SynapseIndia dotnet development ajax client librarySynapseIndia dotnet development ajax client library
SynapseIndia dotnet development ajax client librarySynapseindiappsdevelopment
 
ReactJS - A quick introduction to Awesomeness
ReactJS - A quick introduction to AwesomenessReactJS - A quick introduction to Awesomeness
ReactJS - A quick introduction to AwesomenessRonny Haase
 
RMLL 2014 - LDAP Synchronization Connector
RMLL 2014 - LDAP Synchronization ConnectorRMLL 2014 - LDAP Synchronization Connector
RMLL 2014 - LDAP Synchronization ConnectorClément OUDOT
 
Milton Webdav Presentation for Linagora
Milton Webdav Presentation for LinagoraMilton Webdav Presentation for Linagora
Milton Webdav Presentation for LinagoraBrad McEvoy
 
It's Time To Stop Using Lambda Architecture
It's Time To Stop Using Lambda ArchitectureIt's Time To Stop Using Lambda Architecture
It's Time To Stop Using Lambda ArchitectureYaroslav Tkachenko
 
Change RelationalDB to GraphDB with OrientDB
Change RelationalDB to GraphDB with OrientDBChange RelationalDB to GraphDB with OrientDB
Change RelationalDB to GraphDB with OrientDBApaichon Punopas
 
R2DBC Reactive Relational Database Connectivity
R2DBC Reactive Relational Database ConnectivityR2DBC Reactive Relational Database Connectivity
R2DBC Reactive Relational Database ConnectivityMaarten Smeets
 
What's new in Kibana - Elastic meetup
What's new in Kibana - Elastic meetupWhat's new in Kibana - Elastic meetup
What's new in Kibana - Elastic meetupUllyCarolinneSampaio
 

What's hot (20)

MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and TypescriptMongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
 
From Zero to Streaming Healthcare in Production (Alexander Kouznetsov, Invita...
From Zero to Streaming Healthcare in Production (Alexander Kouznetsov, Invita...From Zero to Streaming Healthcare in Production (Alexander Kouznetsov, Invita...
From Zero to Streaming Healthcare in Production (Alexander Kouznetsov, Invita...
 
Data exchange between flex and java script, 2007
Data exchange between flex and java script, 2007Data exchange between flex and java script, 2007
Data exchange between flex and java script, 2007
 
Entity Framework Overview
Entity Framework OverviewEntity Framework Overview
Entity Framework Overview
 
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Devoxx Belgium 2015
OrientDB - the 2nd generation  of  (Multi-Model) NoSQL - Devoxx Belgium 2015OrientDB - the 2nd generation  of  (Multi-Model) NoSQL - Devoxx Belgium 2015
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Devoxx Belgium 2015
 
Enable GoldenGate Monitoring with OEM 12c/JAgent
Enable GoldenGate Monitoring with OEM 12c/JAgentEnable GoldenGate Monitoring with OEM 12c/JAgent
Enable GoldenGate Monitoring with OEM 12c/JAgent
 
Synchronize AD and OpenLDAP with LSC
Synchronize AD and OpenLDAP with LSCSynchronize AD and OpenLDAP with LSC
Synchronize AD and OpenLDAP with LSC
 
Easing offline web application development with GWT
Easing offline web application development with GWTEasing offline web application development with GWT
Easing offline web application development with GWT
 
Going Offline with Gears And GWT
Going Offline with Gears And GWTGoing Offline with Gears And GWT
Going Offline with Gears And GWT
 
SynapseIndia dotnet development ajax client library
SynapseIndia dotnet development ajax client librarySynapseIndia dotnet development ajax client library
SynapseIndia dotnet development ajax client library
 
ReactJS - A quick introduction to Awesomeness
ReactJS - A quick introduction to AwesomenessReactJS - A quick introduction to Awesomeness
ReactJS - A quick introduction to Awesomeness
 
RMLL 2014 - LDAP Synchronization Connector
RMLL 2014 - LDAP Synchronization ConnectorRMLL 2014 - LDAP Synchronization Connector
RMLL 2014 - LDAP Synchronization Connector
 
Milton Webdav Presentation for Linagora
Milton Webdav Presentation for LinagoraMilton Webdav Presentation for Linagora
Milton Webdav Presentation for Linagora
 
The CQRS diet
The CQRS dietThe CQRS diet
The CQRS diet
 
A4 from rad to mvc
A4 from rad to mvcA4 from rad to mvc
A4 from rad to mvc
 
It's Time To Stop Using Lambda Architecture
It's Time To Stop Using Lambda ArchitectureIt's Time To Stop Using Lambda Architecture
It's Time To Stop Using Lambda Architecture
 
Change RelationalDB to GraphDB with OrientDB
Change RelationalDB to GraphDB with OrientDBChange RelationalDB to GraphDB with OrientDB
Change RelationalDB to GraphDB with OrientDB
 
R2DBC Reactive Relational Database Connectivity
R2DBC Reactive Relational Database ConnectivityR2DBC Reactive Relational Database Connectivity
R2DBC Reactive Relational Database Connectivity
 
React introduction
React introductionReact introduction
React introduction
 
What's new in Kibana - Elastic meetup
What's new in Kibana - Elastic meetupWhat's new in Kibana - Elastic meetup
What's new in Kibana - Elastic meetup
 

Similar to R2DBC JEEConf 2019 by Igor Lozynskyi

Introduction to R2DBC
Introduction to R2DBCIntroduction to R2DBC
Introduction to R2DBCRob Hedgpeth
 
Introducing the R2DBC async Java connector
Introducing the R2DBC async Java connectorIntroducing the R2DBC async Java connector
Introducing the R2DBC async Java connectorMariaDB plc
 
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...VMware Tanzu
 
Reactive Relational Database Connectivity
Reactive Relational Database ConnectivityReactive Relational Database Connectivity
Reactive Relational Database ConnectivityVMware Tanzu
 
SQL for NoSQL and how Apache Calcite can help
SQL for NoSQL and how  Apache Calcite can helpSQL for NoSQL and how  Apache Calcite can help
SQL for NoSQL and how Apache Calcite can helpChristian Tzolov
 
Big Data processing with Spark, Scala or Java?
Big Data processing with Spark, Scala or Java?Big Data processing with Spark, Scala or Java?
Big Data processing with Spark, Scala or Java?Erik-Berndt Scheper
 
Spark Cassandra Connector: Past, Present and Furure
Spark Cassandra Connector: Past, Present and FurureSpark Cassandra Connector: Past, Present and Furure
Spark Cassandra Connector: Past, Present and FurureDataStax Academy
 
Developing node-mdb: a Node.js - based clone of SimpleDB
Developing node-mdb: a Node.js - based clone of SimpleDBDeveloping node-mdb: a Node.js - based clone of SimpleDB
Developing node-mdb: a Node.js - based clone of SimpleDBRob Tweed
 
OrientDB - The 2nd generation of (multi-model) NoSQL
OrientDB - The 2nd generation of  (multi-model) NoSQLOrientDB - The 2nd generation of  (multi-model) NoSQL
OrientDB - The 2nd generation of (multi-model) NoSQLRoberto Franchini
 
Jdbc (database in java)
Jdbc (database in java)Jdbc (database in java)
Jdbc (database in java)Maher Abdo
 
JS App Architecture
JS App ArchitectureJS App Architecture
JS App ArchitectureCorey Butler
 
Apache Spark, the Next Generation Cluster Computing
Apache Spark, the Next Generation Cluster ComputingApache Spark, the Next Generation Cluster Computing
Apache Spark, the Next Generation Cluster ComputingGerger
 
Newer Yankee Workshop - NoSQL
Newer Yankee Workshop -  NoSQLNewer Yankee Workshop -  NoSQL
Newer Yankee Workshop - NoSQLBrian Kaney
 
Test Automation for NoSQL Databases
Test Automation for NoSQL DatabasesTest Automation for NoSQL Databases
Test Automation for NoSQL DatabasesTobias Trelle
 
Cleaning your architecture with android architecture components
Cleaning your architecture with android architecture componentsCleaning your architecture with android architecture components
Cleaning your architecture with android architecture componentsDebora Gomez Bertoli
 

Similar to R2DBC JEEConf 2019 by Igor Lozynskyi (20)

Introduction to R2DBC
Introduction to R2DBCIntroduction to R2DBC
Introduction to R2DBC
 
Jdbc sasidhar
Jdbc  sasidharJdbc  sasidhar
Jdbc sasidhar
 
Introducing the R2DBC async Java connector
Introducing the R2DBC async Java connectorIntroducing the R2DBC async Java connector
Introducing the R2DBC async Java connector
 
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
 
Reactive Relational Database Connectivity
Reactive Relational Database ConnectivityReactive Relational Database Connectivity
Reactive Relational Database Connectivity
 
Jdbc
JdbcJdbc
Jdbc
 
SQL for NoSQL and how Apache Calcite can help
SQL for NoSQL and how  Apache Calcite can helpSQL for NoSQL and how  Apache Calcite can help
SQL for NoSQL and how Apache Calcite can help
 
Jdbc introduction
Jdbc introductionJdbc introduction
Jdbc introduction
 
Big Data processing with Spark, Scala or Java?
Big Data processing with Spark, Scala or Java?Big Data processing with Spark, Scala or Java?
Big Data processing with Spark, Scala or Java?
 
Spark Cassandra Connector: Past, Present and Furure
Spark Cassandra Connector: Past, Present and FurureSpark Cassandra Connector: Past, Present and Furure
Spark Cassandra Connector: Past, Present and Furure
 
Developing node-mdb: a Node.js - based clone of SimpleDB
Developing node-mdb: a Node.js - based clone of SimpleDBDeveloping node-mdb: a Node.js - based clone of SimpleDB
Developing node-mdb: a Node.js - based clone of SimpleDB
 
OrientDB - The 2nd generation of (multi-model) NoSQL
OrientDB - The 2nd generation of  (multi-model) NoSQLOrientDB - The 2nd generation of  (multi-model) NoSQL
OrientDB - The 2nd generation of (multi-model) NoSQL
 
Jdbc (database in java)
Jdbc (database in java)Jdbc (database in java)
Jdbc (database in java)
 
JS App Architecture
JS App ArchitectureJS App Architecture
JS App Architecture
 
Apache Spark, the Next Generation Cluster Computing
Apache Spark, the Next Generation Cluster ComputingApache Spark, the Next Generation Cluster Computing
Apache Spark, the Next Generation Cluster Computing
 
Overview Of JDBC
Overview Of JDBCOverview Of JDBC
Overview Of JDBC
 
Prashanthi
PrashanthiPrashanthi
Prashanthi
 
Newer Yankee Workshop - NoSQL
Newer Yankee Workshop -  NoSQLNewer Yankee Workshop -  NoSQL
Newer Yankee Workshop - NoSQL
 
Test Automation for NoSQL Databases
Test Automation for NoSQL DatabasesTest Automation for NoSQL Databases
Test Automation for NoSQL Databases
 
Cleaning your architecture with android architecture components
Cleaning your architecture with android architecture componentsCleaning your architecture with android architecture components
Cleaning your architecture with android architecture components
 

Recently uploaded

Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfIdiosysTechnologies1
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 

Recently uploaded (20)

Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdf
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 

R2DBC JEEConf 2019 by Igor Lozynskyi