SlideShare a Scribd company logo
1 of 38
Industry REST API
debate: OData vs
GraphQL vs ORDS
Progress DataDirect Partner Summit
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.2
Agenda
 Introduction to standard APIs to query data
 Contrast the APIs for adoption in analytics and data management tools
 Examples
 What you should with this info?
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.3
Introduction to standard APIs to
query data
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.4
REST is great, BUT from an analytics and data management perspective...
 It’s a style – not a standard
 Metadata support?
 Limited querying capabilities
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.5
Introduction to standard APIs to query data
OData GraphQL ORDS
An open protocol to allow the
creation and consumption of
queryable and interoperable
RESTful APIs in a simple and
standard way.
• Started by Microsoft in 2007
• Ratified as an OASIS standard
on February, 2014
• Approved for release by
ISO/IEC on Feburary, 2017
Data query language for APIs
developed internally at Facebook in
2012 before public release in 2015.
GraphQL provides a complete and
understandable description of the
data in your API, gives clients the
power to ask for exactly what they
need and nothing more, makes it
easier to evolve APIs over time, and
enables powerful developer tools.
Oracle REST Data Services
(ORDS) is a powerful tool that
enables developers with SQL and
other database skills to build
enterprise class, data access APIs
to Oracle Databases that today’s
modern, state-of-the-art application
developers want to use, and indeed
increasingly demand to use, to build
applications.
60 Groups at Oracle including
Oracle RDBMS, TimesTen, and
NoSQL
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.6
Contrast the APIs for adoption in
analytics and data management
tools
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.7
Contrast the APIs for adoption in analytics and data management tools
OData GraphQL ORDS
Standard query
capabilities
Yes Yes Yes
Writes Yes Yes Yes
Surfacing metadata Yes Yes Yes
Maturity of specification Yes No Yes
API versioning /
maintenance
Yes No Yes
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.8
Contrast the APIs for adoption in analytics and data management tools
OData GraphQL ORDS
Delta Response (CDC) Yes No No
Transactions Yes, change sets No Yes, SQL pass through
Open Source
Community
Yes Yes No
Client libraries Yes Limited No
Extensible Yes Yes No
Bulk data Yes (Batch Read/Write) No Yes (Load)
Standard Query Capabilities
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.10
Standard query capabilities
Operations OData GraphQL ORDS
Filtering Yes No Yes
Ordering Yes No Yes
Aggregation No No No
Joining Yes Yes No
Paging Yes No Yes
Writes
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.12
Writes
OData GraphQL ORDS
HTTP Operations
Writes happen via HTTP POST,
PATCH, and DELETE
operations. Data to be
inserted/changed is included in
the payload.
Mutations
A mutation is an operation that
“mutates” the underlying data
system. Mutations are how you
create, read, update, or delete
(CRUD) data.
Handlers
ORDS will auto-generate
handlers to perform basic CRUD
operations on single tables or
views. These include query all
rows, query individual row, insert
single row, bulk insert, update,
and return metadata.
Surfacing Metadata
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.14
Surfacing Metadata
Operations OData GraphQL ORDS
Schema Metadata Yes Yes Yes
Object Metadata Yes Yes Yes
Object
Details
Data Types Yes Yes Yes
Scale/Precision Yes No No
Read/Write No No No
Unique No No No
Primary Keys Yes No Yes
Description Yes Yes Yes
Nullability Yes Yes No
API Versioning and Maintenance
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.16
API versioning and maintenance
 GraphQL has positioned itself to take care of the headaches associated with API
versioning and maintenance
 The biggest problem leading to this headache with Rest APIs is that all of the fields are
returned when you query an endpoint
• API developers have no window into whether or not clients are relying on information in
specific fields
• Client developers must process all of the fields returned even if they do not need the
information
 Solved this problem by forcing clients to specify exactly which fields they require
• API developers can proactively reach out to known consumers of fields to migrate off of
deprecated fields
• Response includes information about which fields are deprecated
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.17
API versioning and maintenance
 OData provides similar functionality
• Does support providing select list to limit the number of fields returned to those needed by
application
– This reduces response size and processing in application
• Does not provide a mechanism to indicate that fields are deprecated
 OData is more flexible in that queries can be easily written to return all fields
 OData is adding schema versioning to the specification to deal with this problem
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.18
Examples
Metadata
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.20
OData
 serviceRoot/$metadata
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.21
GraphQL
 Obtain metadata by
writing GraphQL
queries against
predefined types
• __schema
• __type
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.22
ORDS
 HTTP GET
https://server:port/ords/crm/opportunities/{id}
Queries
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.24
OData – return all accounts
 HTTP GET serviceRoot/ACCOUNTS
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.25
GraphQL - return all accounts
 HTTP POST
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.26
ORDS - return all accounts
 HTTP GET https://server:port/ords/ords-test/metadata-catalog/account
Queries | Inner Join
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.28
OData – return all opportunities for an account
 HTTP GET <OData service root
url>/ACCOUNTS?$expand=OPPORTUNITIES($select=NAME,AMOUNT)
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.29
GraphQL - return all opportunities for an account
 HTTP POST
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.30
ORDS – return all opportunities for an account
 Must define handler to generate response in PL/SQL
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.31
ORDS – return all opportunities for an account
 HTTP GET https://server:port/ords/ords-test/demo/test
Queries | Order By
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.33
OData - orderBy
 HTTP GET serviceRoot/OPPORTUNITIES?$orderBy=name
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.34
GraphQL - orderBy
 HTTP POST
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.35
ORDS - orderBy
 HTTP GET https://server:port/ords/crm/demo/opportunity/q="$orderby": {“name":
“ASC"}
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.36
What you should do with this info?
© 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.37
Our recommendations for analytics and data management
OData GraphQL ORDS
BUY
Generally recommend supporting
OData as a consumer and in an
open analytics strategy for
producers.
Bulk data is not yet supported, but
there are data management tools
adopting it today for sources that
support OData exclusively.
HOLD
GraphQL remains very new and it
certainly addresses some of the
challenges in working across
different REST APIs.
HOLD
ORDS appears to be database
centric today and not yet widely
adopted by the vast portfolio of
SaaS applications.
We will continue to serve on the
OData technical committee to drive
the specification forward for our
partners.
We will continue to monitor
adoption and research how we can
leverage the popular concepts to
deliver improved API connectors.
We will continue to monitor adoption
and continue to research where
support for it can improve the
experience for our partners.
REST API debate: OData vs GraphQL vs ORDS

More Related Content

What's hot

Oracle Database Availability & Scalability Across Versions & Editions
Oracle Database Availability & Scalability Across Versions & EditionsOracle Database Availability & Scalability Across Versions & Editions
Oracle Database Availability & Scalability Across Versions & EditionsMarkus Michalewicz
 
Exadata master series_asm_2020
Exadata master series_asm_2020Exadata master series_asm_2020
Exadata master series_asm_2020Anil Nair
 
Oracle RAC 19c: Best Practices and Secret Internals
Oracle RAC 19c: Best Practices and Secret InternalsOracle RAC 19c: Best Practices and Secret Internals
Oracle RAC 19c: Best Practices and Secret InternalsAnil Nair
 
Why Mulesoft ?
Why Mulesoft ?Why Mulesoft ?
Why Mulesoft ?Bui Kiet
 
Apicurio Registry: Event-driven APIs & Schema governance for Apache Kafka | F...
Apicurio Registry: Event-driven APIs & Schema governance for Apache Kafka | F...Apicurio Registry: Event-driven APIs & Schema governance for Apache Kafka | F...
Apicurio Registry: Event-driven APIs & Schema governance for Apache Kafka | F...HostedbyConfluent
 
Migrating Oracle database to Cassandra
Migrating Oracle database to CassandraMigrating Oracle database to Cassandra
Migrating Oracle database to CassandraUmair Mansoob
 
Database Change Management as a Service
Database Change Management as a ServiceDatabase Change Management as a Service
Database Change Management as a ServiceAndrew Solomon
 
Building Real-time Push APIs Using Kafka as the Customer Facing Interface wit...
Building Real-time Push APIs Using Kafka as the Customer Facing Interface wit...Building Real-time Push APIs Using Kafka as the Customer Facing Interface wit...
Building Real-time Push APIs Using Kafka as the Customer Facing Interface wit...HostedbyConfluent
 
apidays Paris 2022 - Generating APIs from business models, Frederic Fontanet,...
apidays Paris 2022 - Generating APIs from business models, Frederic Fontanet,...apidays Paris 2022 - Generating APIs from business models, Frederic Fontanet,...
apidays Paris 2022 - Generating APIs from business models, Frederic Fontanet,...apidays
 
Enabling Vectorized Engine in Apache Spark
Enabling Vectorized Engine in Apache SparkEnabling Vectorized Engine in Apache Spark
Enabling Vectorized Engine in Apache SparkKazuaki Ishizaki
 
API Description Languages
API Description LanguagesAPI Description Languages
API Description LanguagesAkana
 
How to GraphQL
How to GraphQLHow to GraphQL
How to GraphQLTomasz Bak
 
Oracle REST Data Services Best Practices/ Overview
Oracle REST Data Services Best Practices/ OverviewOracle REST Data Services Best Practices/ Overview
Oracle REST Data Services Best Practices/ OverviewKris Rice
 
AppDynamics VS New Relic – The Complete Guide
AppDynamics VS New Relic – The Complete GuideAppDynamics VS New Relic – The Complete Guide
AppDynamics VS New Relic – The Complete GuideTakipi
 
Introducing Change Data Capture with Debezium
Introducing Change Data Capture with DebeziumIntroducing Change Data Capture with Debezium
Introducing Change Data Capture with DebeziumChengKuan Gan
 

What's hot (20)

Rest api and-crud-api
Rest api and-crud-apiRest api and-crud-api
Rest api and-crud-api
 
Oracle Database Availability & Scalability Across Versions & Editions
Oracle Database Availability & Scalability Across Versions & EditionsOracle Database Availability & Scalability Across Versions & Editions
Oracle Database Availability & Scalability Across Versions & Editions
 
Exadata master series_asm_2020
Exadata master series_asm_2020Exadata master series_asm_2020
Exadata master series_asm_2020
 
Oracle Apex Overview
Oracle Apex OverviewOracle Apex Overview
Oracle Apex Overview
 
Oracle RAC 19c: Best Practices and Secret Internals
Oracle RAC 19c: Best Practices and Secret InternalsOracle RAC 19c: Best Practices and Secret Internals
Oracle RAC 19c: Best Practices and Secret Internals
 
Why Mulesoft ?
Why Mulesoft ?Why Mulesoft ?
Why Mulesoft ?
 
Apicurio Registry: Event-driven APIs & Schema governance for Apache Kafka | F...
Apicurio Registry: Event-driven APIs & Schema governance for Apache Kafka | F...Apicurio Registry: Event-driven APIs & Schema governance for Apache Kafka | F...
Apicurio Registry: Event-driven APIs & Schema governance for Apache Kafka | F...
 
Migrating Oracle database to Cassandra
Migrating Oracle database to CassandraMigrating Oracle database to Cassandra
Migrating Oracle database to Cassandra
 
Database Change Management as a Service
Database Change Management as a ServiceDatabase Change Management as a Service
Database Change Management as a Service
 
Building Real-time Push APIs Using Kafka as the Customer Facing Interface wit...
Building Real-time Push APIs Using Kafka as the Customer Facing Interface wit...Building Real-time Push APIs Using Kafka as the Customer Facing Interface wit...
Building Real-time Push APIs Using Kafka as the Customer Facing Interface wit...
 
Amazon API Gateway
Amazon API GatewayAmazon API Gateway
Amazon API Gateway
 
apidays Paris 2022 - Generating APIs from business models, Frederic Fontanet,...
apidays Paris 2022 - Generating APIs from business models, Frederic Fontanet,...apidays Paris 2022 - Generating APIs from business models, Frederic Fontanet,...
apidays Paris 2022 - Generating APIs from business models, Frederic Fontanet,...
 
Graphql
GraphqlGraphql
Graphql
 
Rest api-basic
Rest api-basicRest api-basic
Rest api-basic
 
Enabling Vectorized Engine in Apache Spark
Enabling Vectorized Engine in Apache SparkEnabling Vectorized Engine in Apache Spark
Enabling Vectorized Engine in Apache Spark
 
API Description Languages
API Description LanguagesAPI Description Languages
API Description Languages
 
How to GraphQL
How to GraphQLHow to GraphQL
How to GraphQL
 
Oracle REST Data Services Best Practices/ Overview
Oracle REST Data Services Best Practices/ OverviewOracle REST Data Services Best Practices/ Overview
Oracle REST Data Services Best Practices/ Overview
 
AppDynamics VS New Relic – The Complete Guide
AppDynamics VS New Relic – The Complete GuideAppDynamics VS New Relic – The Complete Guide
AppDynamics VS New Relic – The Complete Guide
 
Introducing Change Data Capture with Debezium
Introducing Change Data Capture with DebeziumIntroducing Change Data Capture with Debezium
Introducing Change Data Capture with Debezium
 

Similar to REST API debate: OData vs GraphQL vs ORDS

Geekier Analytics for SaaS data
Geekier Analytics for SaaS dataGeekier Analytics for SaaS data
Geekier Analytics for SaaS dataProgress
 
Welcome to the Era of Open Analytics
Welcome to the Era of Open AnalyticsWelcome to the Era of Open Analytics
Welcome to the Era of Open AnalyticsSumit Sarkar
 
Building a Hybrid Data Pipeline for Salesforce and Hadoop
Building a Hybrid Data Pipeline for Salesforce and HadoopBuilding a Hybrid Data Pipeline for Salesforce and Hadoop
Building a Hybrid Data Pipeline for Salesforce and HadoopSumit Sarkar
 
From Data To Insights
From Data To InsightsFrom Data To Insights
From Data To InsightsAbhishek Kant
 
OData Hackathon Challenge
OData Hackathon ChallengeOData Hackathon Challenge
OData Hackathon ChallengeSumit Sarkar
 
Journey to Marketing Data Lake [BRK1098]
Journey to Marketing Data Lake [BRK1098]Journey to Marketing Data Lake [BRK1098]
Journey to Marketing Data Lake [BRK1098]Sumit Sarkar
 
High performing Salesforce Data Connectors
High performing Salesforce Data ConnectorsHigh performing Salesforce Data Connectors
High performing Salesforce Data ConnectorsNishanth Kadiyala
 
Journey to SAS Analytics Grid with SAS, R, Python
Journey to SAS Analytics Grid with SAS, R, PythonJourney to SAS Analytics Grid with SAS, R, Python
Journey to SAS Analytics Grid with SAS, R, PythonSumit Sarkar
 
Key Methodologies for Migrating from Oracle to Postgres
Key Methodologies for Migrating from Oracle to PostgresKey Methodologies for Migrating from Oracle to Postgres
Key Methodologies for Migrating from Oracle to PostgresEDB
 
Big Data LDN 2018: 2018 DATA TRENDS: RESULTS FROM FIFTH ANNUAL DATA AND ANALY...
Big Data LDN 2018: 2018 DATA TRENDS: RESULTS FROM FIFTH ANNUAL DATA AND ANALY...Big Data LDN 2018: 2018 DATA TRENDS: RESULTS FROM FIFTH ANNUAL DATA AND ANALY...
Big Data LDN 2018: 2018 DATA TRENDS: RESULTS FROM FIFTH ANNUAL DATA AND ANALY...Matt Stubbs
 
Modern REST APIs for Enterprise Databases - OData
Modern REST APIs for Enterprise Databases - ODataModern REST APIs for Enterprise Databases - OData
Modern REST APIs for Enterprise Databases - ODataNishanth Kadiyala
 
Overview and Walkthrough of the Application Programming Model with SAP Cloud ...
Overview and Walkthrough of the Application Programming Model with SAP Cloud ...Overview and Walkthrough of the Application Programming Model with SAP Cloud ...
Overview and Walkthrough of the Application Programming Model with SAP Cloud ...SAP Cloud Platform
 
OData External Data Integration Strategies for SaaS
OData External Data Integration Strategies for SaaSOData External Data Integration Strategies for SaaS
OData External Data Integration Strategies for SaaSSumit Sarkar
 
Big Data LDN 2018: DATA APIS DON’T DISCRIMINATE
Big Data LDN 2018: DATA APIS DON’T DISCRIMINATEBig Data LDN 2018: DATA APIS DON’T DISCRIMINATE
Big Data LDN 2018: DATA APIS DON’T DISCRIMINATEMatt Stubbs
 
Deliver Secure SQL Access for Enterprise APIs - August 29 2017
Deliver Secure SQL Access for Enterprise APIs - August 29 2017Deliver Secure SQL Access for Enterprise APIs - August 29 2017
Deliver Secure SQL Access for Enterprise APIs - August 29 2017Nishanth Kadiyala
 
Building a marketing data lake
Building a marketing data lakeBuilding a marketing data lake
Building a marketing data lakeSumit Sarkar
 
Data APIs Don't Discriminate [API World Stage Talk]
Data APIs Don't Discriminate [API World Stage Talk]Data APIs Don't Discriminate [API World Stage Talk]
Data APIs Don't Discriminate [API World Stage Talk]Sumit Sarkar
 
Apex atp customer_presentation_wwc march 2019
Apex atp customer_presentation_wwc march 2019Apex atp customer_presentation_wwc march 2019
Apex atp customer_presentation_wwc march 2019Oracle Developers
 

Similar to REST API debate: OData vs GraphQL vs ORDS (20)

Geekier Analytics for SaaS data
Geekier Analytics for SaaS dataGeekier Analytics for SaaS data
Geekier Analytics for SaaS data
 
Welcome to the Era of Open Analytics
Welcome to the Era of Open AnalyticsWelcome to the Era of Open Analytics
Welcome to the Era of Open Analytics
 
Building a Hybrid Data Pipeline for Salesforce and Hadoop
Building a Hybrid Data Pipeline for Salesforce and HadoopBuilding a Hybrid Data Pipeline for Salesforce and Hadoop
Building a Hybrid Data Pipeline for Salesforce and Hadoop
 
From Data To Insights
From Data To InsightsFrom Data To Insights
From Data To Insights
 
OData Hackathon Challenge
OData Hackathon ChallengeOData Hackathon Challenge
OData Hackathon Challenge
 
Journey to Marketing Data Lake [BRK1098]
Journey to Marketing Data Lake [BRK1098]Journey to Marketing Data Lake [BRK1098]
Journey to Marketing Data Lake [BRK1098]
 
High performing Salesforce Data Connectors
High performing Salesforce Data ConnectorsHigh performing Salesforce Data Connectors
High performing Salesforce Data Connectors
 
Journey to SAS Analytics Grid with SAS, R, Python
Journey to SAS Analytics Grid with SAS, R, PythonJourney to SAS Analytics Grid with SAS, R, Python
Journey to SAS Analytics Grid with SAS, R, Python
 
Key Methodologies for Migrating from Oracle to Postgres
Key Methodologies for Migrating from Oracle to PostgresKey Methodologies for Migrating from Oracle to Postgres
Key Methodologies for Migrating from Oracle to Postgres
 
Big Data LDN 2018: 2018 DATA TRENDS: RESULTS FROM FIFTH ANNUAL DATA AND ANALY...
Big Data LDN 2018: 2018 DATA TRENDS: RESULTS FROM FIFTH ANNUAL DATA AND ANALY...Big Data LDN 2018: 2018 DATA TRENDS: RESULTS FROM FIFTH ANNUAL DATA AND ANALY...
Big Data LDN 2018: 2018 DATA TRENDS: RESULTS FROM FIFTH ANNUAL DATA AND ANALY...
 
Modern REST APIs for Enterprise Databases - OData
Modern REST APIs for Enterprise Databases - ODataModern REST APIs for Enterprise Databases - OData
Modern REST APIs for Enterprise Databases - OData
 
Overview and Walkthrough of the Application Programming Model with SAP Cloud ...
Overview and Walkthrough of the Application Programming Model with SAP Cloud ...Overview and Walkthrough of the Application Programming Model with SAP Cloud ...
Overview and Walkthrough of the Application Programming Model with SAP Cloud ...
 
OData External Data Integration Strategies for SaaS
OData External Data Integration Strategies for SaaSOData External Data Integration Strategies for SaaS
OData External Data Integration Strategies for SaaS
 
Big Data LDN 2018: DATA APIS DON’T DISCRIMINATE
Big Data LDN 2018: DATA APIS DON’T DISCRIMINATEBig Data LDN 2018: DATA APIS DON’T DISCRIMINATE
Big Data LDN 2018: DATA APIS DON’T DISCRIMINATE
 
Dev207 berlin
Dev207 berlinDev207 berlin
Dev207 berlin
 
Deliver Secure SQL Access for Enterprise APIs - August 29 2017
Deliver Secure SQL Access for Enterprise APIs - August 29 2017Deliver Secure SQL Access for Enterprise APIs - August 29 2017
Deliver Secure SQL Access for Enterprise APIs - August 29 2017
 
Building a marketing data lake
Building a marketing data lakeBuilding a marketing data lake
Building a marketing data lake
 
Data APIs Don't Discriminate [API World Stage Talk]
Data APIs Don't Discriminate [API World Stage Talk]Data APIs Don't Discriminate [API World Stage Talk]
Data APIs Don't Discriminate [API World Stage Talk]
 
SAP and Red Hat JBoss Partner Webinar
SAP and Red Hat JBoss Partner WebinarSAP and Red Hat JBoss Partner Webinar
SAP and Red Hat JBoss Partner Webinar
 
Apex atp customer_presentation_wwc march 2019
Apex atp customer_presentation_wwc march 2019Apex atp customer_presentation_wwc march 2019
Apex atp customer_presentation_wwc march 2019
 

More from Sumit Sarkar

What serverless means for enterprise apps
What serverless means for enterprise appsWhat serverless means for enterprise apps
What serverless means for enterprise appsSumit Sarkar
 
Digitize Enterprise Assets for Mobility
Digitize Enterprise Assets for MobilityDigitize Enterprise Assets for Mobility
Digitize Enterprise Assets for MobilitySumit Sarkar
 
SQL vs SOQL for Salesforce Analytics
SQL vs SOQL for Salesforce AnalyticsSQL vs SOQL for Salesforce Analytics
SQL vs SOQL for Salesforce AnalyticsSumit Sarkar
 
Salesforce Connect External Object Reports
Salesforce Connect External Object ReportsSalesforce Connect External Object Reports
Salesforce Connect External Object ReportsSumit Sarkar
 
Hybrid Data Pipeline for SQL and REST
Hybrid Data Pipeline for SQL and RESTHybrid Data Pipeline for SQL and REST
Hybrid Data Pipeline for SQL and RESTSumit Sarkar
 
Firewall friendly pipeline for secure data access
Firewall friendly pipeline for secure data accessFirewall friendly pipeline for secure data access
Firewall friendly pipeline for secure data accessSumit Sarkar
 
Salesforce External Objects for Big Data
Salesforce External Objects for Big DataSalesforce External Objects for Big Data
Salesforce External Objects for Big DataSumit Sarkar
 
OData and the future of business objects universes
OData and the future of business objects universesOData and the future of business objects universes
OData and the future of business objects universesSumit Sarkar
 
Webinar on MongoDB BI Connectors
Webinar on MongoDB BI ConnectorsWebinar on MongoDB BI Connectors
Webinar on MongoDB BI ConnectorsSumit Sarkar
 
Lightning Connect: Lessons Learned
Lightning Connect: Lessons LearnedLightning Connect: Lessons Learned
Lightning Connect: Lessons LearnedSumit Sarkar
 
Ibis 2015 final template
Ibis 2015 final templateIbis 2015 final template
Ibis 2015 final templateSumit Sarkar
 

More from Sumit Sarkar (11)

What serverless means for enterprise apps
What serverless means for enterprise appsWhat serverless means for enterprise apps
What serverless means for enterprise apps
 
Digitize Enterprise Assets for Mobility
Digitize Enterprise Assets for MobilityDigitize Enterprise Assets for Mobility
Digitize Enterprise Assets for Mobility
 
SQL vs SOQL for Salesforce Analytics
SQL vs SOQL for Salesforce AnalyticsSQL vs SOQL for Salesforce Analytics
SQL vs SOQL for Salesforce Analytics
 
Salesforce Connect External Object Reports
Salesforce Connect External Object ReportsSalesforce Connect External Object Reports
Salesforce Connect External Object Reports
 
Hybrid Data Pipeline for SQL and REST
Hybrid Data Pipeline for SQL and RESTHybrid Data Pipeline for SQL and REST
Hybrid Data Pipeline for SQL and REST
 
Firewall friendly pipeline for secure data access
Firewall friendly pipeline for secure data accessFirewall friendly pipeline for secure data access
Firewall friendly pipeline for secure data access
 
Salesforce External Objects for Big Data
Salesforce External Objects for Big DataSalesforce External Objects for Big Data
Salesforce External Objects for Big Data
 
OData and the future of business objects universes
OData and the future of business objects universesOData and the future of business objects universes
OData and the future of business objects universes
 
Webinar on MongoDB BI Connectors
Webinar on MongoDB BI ConnectorsWebinar on MongoDB BI Connectors
Webinar on MongoDB BI Connectors
 
Lightning Connect: Lessons Learned
Lightning Connect: Lessons LearnedLightning Connect: Lessons Learned
Lightning Connect: Lessons Learned
 
Ibis 2015 final template
Ibis 2015 final templateIbis 2015 final template
Ibis 2015 final template
 

Recently uploaded

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 

Recently uploaded (20)

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 

REST API debate: OData vs GraphQL vs ORDS

  • 1. Industry REST API debate: OData vs GraphQL vs ORDS Progress DataDirect Partner Summit
  • 2. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.2 Agenda  Introduction to standard APIs to query data  Contrast the APIs for adoption in analytics and data management tools  Examples  What you should with this info?
  • 3. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.3 Introduction to standard APIs to query data
  • 4. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.4 REST is great, BUT from an analytics and data management perspective...  It’s a style – not a standard  Metadata support?  Limited querying capabilities
  • 5. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.5 Introduction to standard APIs to query data OData GraphQL ORDS An open protocol to allow the creation and consumption of queryable and interoperable RESTful APIs in a simple and standard way. • Started by Microsoft in 2007 • Ratified as an OASIS standard on February, 2014 • Approved for release by ISO/IEC on Feburary, 2017 Data query language for APIs developed internally at Facebook in 2012 before public release in 2015. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools. Oracle REST Data Services (ORDS) is a powerful tool that enables developers with SQL and other database skills to build enterprise class, data access APIs to Oracle Databases that today’s modern, state-of-the-art application developers want to use, and indeed increasingly demand to use, to build applications. 60 Groups at Oracle including Oracle RDBMS, TimesTen, and NoSQL
  • 6. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.6 Contrast the APIs for adoption in analytics and data management tools
  • 7. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.7 Contrast the APIs for adoption in analytics and data management tools OData GraphQL ORDS Standard query capabilities Yes Yes Yes Writes Yes Yes Yes Surfacing metadata Yes Yes Yes Maturity of specification Yes No Yes API versioning / maintenance Yes No Yes
  • 8. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.8 Contrast the APIs for adoption in analytics and data management tools OData GraphQL ORDS Delta Response (CDC) Yes No No Transactions Yes, change sets No Yes, SQL pass through Open Source Community Yes Yes No Client libraries Yes Limited No Extensible Yes Yes No Bulk data Yes (Batch Read/Write) No Yes (Load)
  • 10. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.10 Standard query capabilities Operations OData GraphQL ORDS Filtering Yes No Yes Ordering Yes No Yes Aggregation No No No Joining Yes Yes No Paging Yes No Yes
  • 12. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.12 Writes OData GraphQL ORDS HTTP Operations Writes happen via HTTP POST, PATCH, and DELETE operations. Data to be inserted/changed is included in the payload. Mutations A mutation is an operation that “mutates” the underlying data system. Mutations are how you create, read, update, or delete (CRUD) data. Handlers ORDS will auto-generate handlers to perform basic CRUD operations on single tables or views. These include query all rows, query individual row, insert single row, bulk insert, update, and return metadata.
  • 14. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.14 Surfacing Metadata Operations OData GraphQL ORDS Schema Metadata Yes Yes Yes Object Metadata Yes Yes Yes Object Details Data Types Yes Yes Yes Scale/Precision Yes No No Read/Write No No No Unique No No No Primary Keys Yes No Yes Description Yes Yes Yes Nullability Yes Yes No
  • 15. API Versioning and Maintenance
  • 16. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.16 API versioning and maintenance  GraphQL has positioned itself to take care of the headaches associated with API versioning and maintenance  The biggest problem leading to this headache with Rest APIs is that all of the fields are returned when you query an endpoint • API developers have no window into whether or not clients are relying on information in specific fields • Client developers must process all of the fields returned even if they do not need the information  Solved this problem by forcing clients to specify exactly which fields they require • API developers can proactively reach out to known consumers of fields to migrate off of deprecated fields • Response includes information about which fields are deprecated
  • 17. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.17 API versioning and maintenance  OData provides similar functionality • Does support providing select list to limit the number of fields returned to those needed by application – This reduces response size and processing in application • Does not provide a mechanism to indicate that fields are deprecated  OData is more flexible in that queries can be easily written to return all fields  OData is adding schema versioning to the specification to deal with this problem
  • 18. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.18 Examples
  • 20. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.20 OData  serviceRoot/$metadata
  • 21. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.21 GraphQL  Obtain metadata by writing GraphQL queries against predefined types • __schema • __type
  • 22. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.22 ORDS  HTTP GET https://server:port/ords/crm/opportunities/{id}
  • 24. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.24 OData – return all accounts  HTTP GET serviceRoot/ACCOUNTS
  • 25. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.25 GraphQL - return all accounts  HTTP POST
  • 26. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.26 ORDS - return all accounts  HTTP GET https://server:port/ords/ords-test/metadata-catalog/account
  • 28. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.28 OData – return all opportunities for an account  HTTP GET <OData service root url>/ACCOUNTS?$expand=OPPORTUNITIES($select=NAME,AMOUNT)
  • 29. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.29 GraphQL - return all opportunities for an account  HTTP POST
  • 30. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.30 ORDS – return all opportunities for an account  Must define handler to generate response in PL/SQL
  • 31. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.31 ORDS – return all opportunities for an account  HTTP GET https://server:port/ords/ords-test/demo/test
  • 33. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.33 OData - orderBy  HTTP GET serviceRoot/OPPORTUNITIES?$orderBy=name
  • 34. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.34 GraphQL - orderBy  HTTP POST
  • 35. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.35 ORDS - orderBy  HTTP GET https://server:port/ords/crm/demo/opportunity/q="$orderby": {“name": “ASC"}
  • 36. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.36 What you should do with this info?
  • 37. © 2016 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.37 Our recommendations for analytics and data management OData GraphQL ORDS BUY Generally recommend supporting OData as a consumer and in an open analytics strategy for producers. Bulk data is not yet supported, but there are data management tools adopting it today for sources that support OData exclusively. HOLD GraphQL remains very new and it certainly addresses some of the challenges in working across different REST APIs. HOLD ORDS appears to be database centric today and not yet widely adopted by the vast portfolio of SaaS applications. We will continue to serve on the OData technical committee to drive the specification forward for our partners. We will continue to monitor adoption and research how we can leverage the popular concepts to deliver improved API connectors. We will continue to monitor adoption and continue to research where support for it can improve the experience for our partners.