SlideShare a Scribd company logo
The State of Data Today
A Developer’s Dilemma
See the World as a Database
Agenda
• Introduction
• A Sample Company’s Data
• The Problem: Disparate APIs & SDKs
• The Solution: Common Interfaces
• Code Samples
See the World as a Database
• Over 2 decades of experience
(since 1994) in building
integration components.
• 80+ Data Sources
• ‘See the World as a Database’
About CData Software
• Started: 1994
• Location: Chapel Hill, NC
• CData Software (formerly
RSSBus), a spin-off of
/n software.
See the World as a Database
A Sample Company’s Data
QuickBooks (Accounting & PoS)
Exact Online (Warehousing & Logistics)
HubSpot (CRM)
Microsoft Project (Project/Scheduling)
On-premises & cloud-based MySQL databases
Facebook & Twitter (Social Media data)
See the World as a Database
Accessing A Sample Company’s Data
REST APIs
XML APIs
SDKs
Authentication
Basic & OAuth
See the World as a Database
The Problem: Disparate APIs & SDKs
REST/SOAP APIs & SDKs model data differently
SDKs are language-dependent
Changes break existing tools
Lack of data-centric functionality
See the World as a Database
The Solution: A Common Interface
Built using established standards
Developers learn a single protocol
Data-centric model
Power of SQL (JOINs, filtering, aggregation)
Easily browse data
API/SDK/data model changes are covered
See the World as a Database
Digging In: How Do They Work?
Mapping APIs & SDKs to a relational model
Tables and Views correspond with resources
One resource per row
Nested values represented as JSON
Sub-collections are treated as related tables
SQL queries roughly match HTTP verbs
Stored procedures are used for other operations
See the World as a Database
Digging In: How Do They Work?
INSERT means more than creating a resource
Major SQL features supported across sources
Complex queries utilize API/SDK calls and memory
Bulk operations are supported, where possible
Advanced queries utilize API/SDK functionality
See the World as a Database
When are SDK/APIs better?
Data streaming
Event-driven applications
Language-centric development
See the World as a Database
Code Sample: Reading MySQL Data
using System.Data.CData.MySQL;
String connectionString =
"User=myUser;Password=myPassword;Database=myDatabase;Server=myServer;Port=3306;";
using (MySQLConnection conn = new MySQLConnection(connectionString)) {
MySQLCommand cmd = new MySQLCommand("", conn);
MySQLDataReader rdr;
cmd.CommandText = "SELECT * FROM Orders";
rdr = cmd.ExecuteReader();
while (rdr.Read()) {
//process results
}
}
See the World as a Database
Code Sample: Updating QuickBooks Data
using System.Data.CData.QuickBooks;
String connectionString = "User=test;Password=test;URL=http://localhost:8166;";
using (QuickBooksConnection conn = new QuickBooksConnection(connectionString)) {
QuickBooksCommand cmd = new QuickBooksCommand("", conn);
cmd.CommandText = "UPDATE Customers SET Name='Hook, Captain' WHERE Id = @myId";
cmd.Parameters.Add(new QuickBooksParameter("myId", "12345678-9876543210"));
cmd.ExecuteNonQuery();
}
See the World as a Database
Calling Stored Procedures
Stored procedures represent non-CRUD actions
Called using name and passing appropriate parameters
Results can be read, stored, and processed
See the World as a Database
Code Sample: Upload Media to Twitter
using System.Data.CData.Twitter;
String connectionString = "OAuthAccessToken=...;OAuthAccessTokenSecret=...;" +
"OAuthClientId=...;OAuthClientSecret=...;";
using (TwitterConnection conn = new TwitterConnection(connectionString)) {
TwitterCommand cmd = new TwitterCommand("UploadMedia", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new TwitterParameter("MediaFilePath#1", "path/to/file1"));
TwitterDataReader rdr = cmd.ExecuteReader();
while (rdr.Read()) {
//process results
}
}
See the World as a Database
Desktop/Server apps call the Stored Procedure:
GetOAuthAccessToken
Web apps call the Stored Procedures:
GetOAuthAuthorizationUrl
GetOAuthAccessToken
Optional: allow the Drivers to manage OAuth flow
Performing OAuth Authentication
See the World as a Database
Code Sample: Exact Online OAuth Flow
using System.Data.CData.ExactOnline;
string connectionString = "Region=’United States’;OAuthClientId=...;OAuthClientSecret=...;";
string accessToken, refreshToken, expiresIn;
accessToken = refreshToken = expiresIn = string.Empty;
using (ExactOnlineConnection conn = new ExactOnlineConnection(connectionString)){
ExactOnlineCommand cmd = new ExactOnlineCommand("GetOAuthAccessToken", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new ExactOnlineParameter("CallBackUrl", "https://localhost:7777"));
ExactOnlineDataReader reader = cmd.ExecuteReader();
if(reader.Read()){
accessToken = (string)reader["OAuthAccessToken"];
refreshToken = (string)reader["OAuthRefreshToken"];
expiresIn = (string)reader["ExpiresIn"];
}
}
connectionString += "OAuthAccessToken=" + accessToken + ";OAuthRefreshToken=" + refreshToken + ";";
See the World as a Database
Data Sources
See the World as a Database
Thank You!
In Conclusion
Learning Disparate APIs/SDKs are Costly
Common Interfaces Provide Easy Access to Data
Questions?

More Related Content

What's hot

MongoDB .local Munich 2019: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local Munich 2019: MongoDB Atlas Data Lake Technical Deep DiveMongoDB .local Munich 2019: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local Munich 2019: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB
 
DocumentDB - NoSQL on Cloud at Reboot2015
DocumentDB - NoSQL on Cloud at Reboot2015DocumentDB - NoSQL on Cloud at Reboot2015
DocumentDB - NoSQL on Cloud at Reboot2015
Vidyasagar Machupalli
 
MongoDB .local Munich 2019: MongoDB Atlas Auto-Scaling
MongoDB .local Munich 2019: MongoDB Atlas Auto-ScalingMongoDB .local Munich 2019: MongoDB Atlas Auto-Scaling
MongoDB .local Munich 2019: MongoDB Atlas Auto-Scaling
MongoDB
 
Benefits of Using MongoDB Over RDBMSs
Benefits of Using MongoDB Over RDBMSsBenefits of Using MongoDB Over RDBMSs
Benefits of Using MongoDB Over RDBMSs
MongoDB
 
Spark and MongoDB
Spark and MongoDBSpark and MongoDB
Spark and MongoDB
Norberto Leite
 
Mindtalk Tech - Behind the scenes
Mindtalk Tech - Behind the scenesMindtalk Tech - Behind the scenes
Mindtalk Tech - Behind the scenes
robin_sy
 
MongoDB in a Mainframe World
MongoDB in a Mainframe WorldMongoDB in a Mainframe World
MongoDB in a Mainframe World
MongoDB
 
L’architettura di Classe Enterprise di Nuova Generazione
L’architettura di Classe Enterprise di Nuova GenerazioneL’architettura di Classe Enterprise di Nuova Generazione
L’architettura di Classe Enterprise di Nuova Generazione
MongoDB
 
Improve your SQL workload with observability
Improve your SQL workload with observabilityImprove your SQL workload with observability
Improve your SQL workload with observability
OVHcloud
 
MongoDB as a Data Warehouse: Time Series and Device History Data (Medtronic)
MongoDB as a Data Warehouse: Time Series and Device History Data (Medtronic)MongoDB as a Data Warehouse: Time Series and Device History Data (Medtronic)
MongoDB as a Data Warehouse: Time Series and Device History Data (Medtronic)MongoDB
 
Session #2, tech session: Build realtime search by Sylvain Utard from Algolia
Session #2, tech session: Build realtime search by Sylvain Utard from AlgoliaSession #2, tech session: Build realtime search by Sylvain Utard from Algolia
Session #2, tech session: Build realtime search by Sylvain Utard from Algolia
SaaS Is Beautiful
 
MongoDB .local Munich 2019: Managing a Heterogeneous Stack with MongoDB & SQL
MongoDB .local Munich 2019: Managing a Heterogeneous Stack with MongoDB & SQLMongoDB .local Munich 2019: Managing a Heterogeneous Stack with MongoDB & SQL
MongoDB .local Munich 2019: Managing a Heterogeneous Stack with MongoDB & SQL
MongoDB
 
Hands On: Javascript SDK
Hands On: Javascript SDKHands On: Javascript SDK
Hands On: Javascript SDK
Treasure Data, Inc.
 
Blazing Fast Analytics with MongoDB & Spark
Blazing Fast Analytics with MongoDB & SparkBlazing Fast Analytics with MongoDB & Spark
Blazing Fast Analytics with MongoDB & Spark
MongoDB
 
Doing Joins in MongoDB: Best Practices for Using $lookup
Doing Joins in MongoDB: Best Practices for Using $lookupDoing Joins in MongoDB: Best Practices for Using $lookup
Doing Joins in MongoDB: Best Practices for Using $lookup
MongoDB
 
MongoDB: Agile Combustion Engine
MongoDB: Agile Combustion EngineMongoDB: Agile Combustion Engine
MongoDB: Agile Combustion Engine
Norberto Leite
 
Augmenting Mongo DB with treasure data
Augmenting Mongo DB with treasure dataAugmenting Mongo DB with treasure data
Augmenting Mongo DB with treasure data
Treasure Data, Inc.
 
Azure DocumentDB for Healthcare Integration
Azure DocumentDB for Healthcare IntegrationAzure DocumentDB for Healthcare Integration
Azure DocumentDB for Healthcare Integration
BizTalk360
 
Advanced Schema Design Patterns
Advanced Schema Design PatternsAdvanced Schema Design Patterns
Advanced Schema Design Patterns
MongoDB
 
Jumpstart: Introduction to MongoDB
Jumpstart: Introduction to MongoDBJumpstart: Introduction to MongoDB
Jumpstart: Introduction to MongoDB
MongoDB
 

What's hot (20)

MongoDB .local Munich 2019: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local Munich 2019: MongoDB Atlas Data Lake Technical Deep DiveMongoDB .local Munich 2019: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local Munich 2019: MongoDB Atlas Data Lake Technical Deep Dive
 
DocumentDB - NoSQL on Cloud at Reboot2015
DocumentDB - NoSQL on Cloud at Reboot2015DocumentDB - NoSQL on Cloud at Reboot2015
DocumentDB - NoSQL on Cloud at Reboot2015
 
MongoDB .local Munich 2019: MongoDB Atlas Auto-Scaling
MongoDB .local Munich 2019: MongoDB Atlas Auto-ScalingMongoDB .local Munich 2019: MongoDB Atlas Auto-Scaling
MongoDB .local Munich 2019: MongoDB Atlas Auto-Scaling
 
Benefits of Using MongoDB Over RDBMSs
Benefits of Using MongoDB Over RDBMSsBenefits of Using MongoDB Over RDBMSs
Benefits of Using MongoDB Over RDBMSs
 
Spark and MongoDB
Spark and MongoDBSpark and MongoDB
Spark and MongoDB
 
Mindtalk Tech - Behind the scenes
Mindtalk Tech - Behind the scenesMindtalk Tech - Behind the scenes
Mindtalk Tech - Behind the scenes
 
MongoDB in a Mainframe World
MongoDB in a Mainframe WorldMongoDB in a Mainframe World
MongoDB in a Mainframe World
 
L’architettura di Classe Enterprise di Nuova Generazione
L’architettura di Classe Enterprise di Nuova GenerazioneL’architettura di Classe Enterprise di Nuova Generazione
L’architettura di Classe Enterprise di Nuova Generazione
 
Improve your SQL workload with observability
Improve your SQL workload with observabilityImprove your SQL workload with observability
Improve your SQL workload with observability
 
MongoDB as a Data Warehouse: Time Series and Device History Data (Medtronic)
MongoDB as a Data Warehouse: Time Series and Device History Data (Medtronic)MongoDB as a Data Warehouse: Time Series and Device History Data (Medtronic)
MongoDB as a Data Warehouse: Time Series and Device History Data (Medtronic)
 
Session #2, tech session: Build realtime search by Sylvain Utard from Algolia
Session #2, tech session: Build realtime search by Sylvain Utard from AlgoliaSession #2, tech session: Build realtime search by Sylvain Utard from Algolia
Session #2, tech session: Build realtime search by Sylvain Utard from Algolia
 
MongoDB .local Munich 2019: Managing a Heterogeneous Stack with MongoDB & SQL
MongoDB .local Munich 2019: Managing a Heterogeneous Stack with MongoDB & SQLMongoDB .local Munich 2019: Managing a Heterogeneous Stack with MongoDB & SQL
MongoDB .local Munich 2019: Managing a Heterogeneous Stack with MongoDB & SQL
 
Hands On: Javascript SDK
Hands On: Javascript SDKHands On: Javascript SDK
Hands On: Javascript SDK
 
Blazing Fast Analytics with MongoDB & Spark
Blazing Fast Analytics with MongoDB & SparkBlazing Fast Analytics with MongoDB & Spark
Blazing Fast Analytics with MongoDB & Spark
 
Doing Joins in MongoDB: Best Practices for Using $lookup
Doing Joins in MongoDB: Best Practices for Using $lookupDoing Joins in MongoDB: Best Practices for Using $lookup
Doing Joins in MongoDB: Best Practices for Using $lookup
 
MongoDB: Agile Combustion Engine
MongoDB: Agile Combustion EngineMongoDB: Agile Combustion Engine
MongoDB: Agile Combustion Engine
 
Augmenting Mongo DB with treasure data
Augmenting Mongo DB with treasure dataAugmenting Mongo DB with treasure data
Augmenting Mongo DB with treasure data
 
Azure DocumentDB for Healthcare Integration
Azure DocumentDB for Healthcare IntegrationAzure DocumentDB for Healthcare Integration
Azure DocumentDB for Healthcare Integration
 
Advanced Schema Design Patterns
Advanced Schema Design PatternsAdvanced Schema Design Patterns
Advanced Schema Design Patterns
 
Jumpstart: Introduction to MongoDB
Jumpstart: Introduction to MongoDBJumpstart: Introduction to MongoDB
Jumpstart: Introduction to MongoDB
 

Viewers also liked

Atlas amphibians of pakistan
Atlas amphibians of pakistanAtlas amphibians of pakistan
Atlas amphibians of pakistan
Prof. Sharif Khan
 
Van laarhoven lens
Van laarhoven lensVan laarhoven lens
Van laarhoven lens
Naoki Aoyama
 
3Com 3C0EPUPGAGTVCX
3Com 3C0EPUPGAGTVCX3Com 3C0EPUPGAGTVCX
3Com 3C0EPUPGAGTVCX
savomir
 
Clasificación trabajos de investigación
Clasificación trabajos de investigaciónClasificación trabajos de investigación
Clasificación trabajos de investigación
DIEGO MAURICIO CHAPARRO
 
Samsung tdb-dvm-s-water e-outdoor_dbeu-13082_da1
Samsung tdb-dvm-s-water e-outdoor_dbeu-13082_da1Samsung tdb-dvm-s-water e-outdoor_dbeu-13082_da1
Samsung tdb-dvm-s-water e-outdoor_dbeu-13082_da1
Haluk TOSUN
 
3Com 3C96200D-JA
3Com 3C96200D-JA3Com 3C96200D-JA
3Com 3C96200D-JA
savomir
 
Sokobanja
SokobanjaSokobanja
Sokobanja
ansev66666
 
E.ε.ε.ε.κ. καλαματας
E.ε.ε.ε.κ. καλαματαςE.ε.ε.ε.κ. καλαματας
E.ε.ε.ε.κ. καλαματας
eeeek
 
Guia construyendo
Guia construyendoGuia construyendo
J eus como modelo de vida
J eus como modelo de vidaJ eus como modelo de vida
J eus como modelo de vida
Laura Brasil
 
Crea tu empresa
Crea tu empresaCrea tu empresa
Crea tu empresa
Margaret Ova
 

Viewers also liked (11)

Atlas amphibians of pakistan
Atlas amphibians of pakistanAtlas amphibians of pakistan
Atlas amphibians of pakistan
 
Van laarhoven lens
Van laarhoven lensVan laarhoven lens
Van laarhoven lens
 
3Com 3C0EPUPGAGTVCX
3Com 3C0EPUPGAGTVCX3Com 3C0EPUPGAGTVCX
3Com 3C0EPUPGAGTVCX
 
Clasificación trabajos de investigación
Clasificación trabajos de investigaciónClasificación trabajos de investigación
Clasificación trabajos de investigación
 
Samsung tdb-dvm-s-water e-outdoor_dbeu-13082_da1
Samsung tdb-dvm-s-water e-outdoor_dbeu-13082_da1Samsung tdb-dvm-s-water e-outdoor_dbeu-13082_da1
Samsung tdb-dvm-s-water e-outdoor_dbeu-13082_da1
 
3Com 3C96200D-JA
3Com 3C96200D-JA3Com 3C96200D-JA
3Com 3C96200D-JA
 
Sokobanja
SokobanjaSokobanja
Sokobanja
 
E.ε.ε.ε.κ. καλαματας
E.ε.ε.ε.κ. καλαματαςE.ε.ε.ε.κ. καλαματας
E.ε.ε.ε.κ. καλαματας
 
Guia construyendo
Guia construyendoGuia construyendo
Guia construyendo
 
J eus como modelo de vida
J eus como modelo de vidaJ eus como modelo de vida
J eus como modelo de vida
 
Crea tu empresa
Crea tu empresaCrea tu empresa
Crea tu empresa
 

Similar to CData Data Today: A Developer's Dilemma

Why Standards-Based Drivers Offer Better API Integration
Why Standards-Based Drivers Offer Better API IntegrationWhy Standards-Based Drivers Offer Better API Integration
Why Standards-Based Drivers Offer Better API Integration
Nordic APIs
 
Why Standards-Based Drivers Offer Better API Integration
Why Standards-Based Drivers Offer Better API IntegrationWhy Standards-Based Drivers Offer Better API Integration
Why Standards-Based Drivers Offer Better API Integration
Jerod Johnson
 
PayPal datalake journey | teradata - edge of next | san diego | 2017 october ...
PayPal datalake journey | teradata - edge of next | san diego | 2017 october ...PayPal datalake journey | teradata - edge of next | san diego | 2017 october ...
PayPal datalake journey | teradata - edge of next | san diego | 2017 october ...
Deepak Chandramouli
 
Presto: Fast SQL-on-Anything (including Delta Lake, Snowflake, Elasticsearch ...
Presto: Fast SQL-on-Anything (including Delta Lake, Snowflake, Elasticsearch ...Presto: Fast SQL-on-Anything (including Delta Lake, Snowflake, Elasticsearch ...
Presto: Fast SQL-on-Anything (including Delta Lake, Snowflake, Elasticsearch ...
Databricks
 
CData - Triangle Woodard Group - QuickBooks
CData - Triangle Woodard Group - QuickBooksCData - Triangle Woodard Group - QuickBooks
CData - Triangle Woodard Group - QuickBooks
Jerod Johnson
 
Qlik and Confluent Success Stories with Kafka - How Generali and Skechers Kee...
Qlik and Confluent Success Stories with Kafka - How Generali and Skechers Kee...Qlik and Confluent Success Stories with Kafka - How Generali and Skechers Kee...
Qlik and Confluent Success Stories with Kafka - How Generali and Skechers Kee...
HostedbyConfluent
 
Integrate MongoDB & SQL data with a single REST API
Integrate MongoDB & SQL data with a single REST APIIntegrate MongoDB & SQL data with a single REST API
Integrate MongoDB & SQL data with a single REST API
Espresso Logic
 
Microsoft Azure Big Data Analytics
Microsoft Azure Big Data AnalyticsMicrosoft Azure Big Data Analytics
Microsoft Azure Big Data Analytics
Mark Kromer
 
Building Operational Data Lake using Spark and SequoiaDB with Yang Peng
Building Operational Data Lake using Spark and SequoiaDB with Yang PengBuilding Operational Data Lake using Spark and SequoiaDB with Yang Peng
Building Operational Data Lake using Spark and SequoiaDB with Yang Peng
Databricks
 
Accelerate and modernize your data pipelines
Accelerate and modernize your data pipelinesAccelerate and modernize your data pipelines
Accelerate and modernize your data pipelines
Paul Van Siclen
 
Big Data Analytics in the Cloud with Microsoft Azure
Big Data Analytics in the Cloud with Microsoft AzureBig Data Analytics in the Cloud with Microsoft Azure
Big Data Analytics in the Cloud with Microsoft Azure
Mark Kromer
 
Dsdt meetup 2017 11-21
Dsdt meetup 2017 11-21Dsdt meetup 2017 11-21
Dsdt meetup 2017 11-21
JDA Labs MTL
 
DSDT Meetup Nov 2017
DSDT Meetup Nov 2017DSDT Meetup Nov 2017
DSDT Meetup Nov 2017
DSDT_MTL
 
StreamCentral Technical Overview
StreamCentral Technical OverviewStreamCentral Technical Overview
StreamCentral Technical Overview
Raheel Retiwalla
 
Data Stream Processing for Beginners with Kafka and CDC
Data Stream Processing for Beginners with Kafka and CDCData Stream Processing for Beginners with Kafka and CDC
Data Stream Processing for Beginners with Kafka and CDC
Abhijit Kumar
 
Developing Enterprise Consciousness: Building Modern Open Data Platforms
Developing Enterprise Consciousness: Building Modern Open Data PlatformsDeveloping Enterprise Consciousness: Building Modern Open Data Platforms
Developing Enterprise Consciousness: Building Modern Open Data Platforms
ScyllaDB
 
Webinar: How to Drive Business Value in Financial Services with MongoDB
Webinar: How to Drive Business Value in Financial Services with MongoDBWebinar: How to Drive Business Value in Financial Services with MongoDB
Webinar: How to Drive Business Value in Financial Services with MongoDB
MongoDB
 
L’architettura di classe enterprise di nuova generazione
L’architettura di classe enterprise di nuova generazioneL’architettura di classe enterprise di nuova generazione
L’architettura di classe enterprise di nuova generazione
MongoDB
 
Connecting your .Net Applications to NoSQL Databases - MongoDB & Cassandra
Connecting your .Net Applications to NoSQL Databases - MongoDB & CassandraConnecting your .Net Applications to NoSQL Databases - MongoDB & Cassandra
Connecting your .Net Applications to NoSQL Databases - MongoDB & Cassandra
Lohith Goudagere Nagaraj
 
Unlocking the Value of Your Data Lake
Unlocking the Value of Your Data LakeUnlocking the Value of Your Data Lake
Unlocking the Value of Your Data Lake
DATAVERSITY
 

Similar to CData Data Today: A Developer's Dilemma (20)

Why Standards-Based Drivers Offer Better API Integration
Why Standards-Based Drivers Offer Better API IntegrationWhy Standards-Based Drivers Offer Better API Integration
Why Standards-Based Drivers Offer Better API Integration
 
Why Standards-Based Drivers Offer Better API Integration
Why Standards-Based Drivers Offer Better API IntegrationWhy Standards-Based Drivers Offer Better API Integration
Why Standards-Based Drivers Offer Better API Integration
 
PayPal datalake journey | teradata - edge of next | san diego | 2017 october ...
PayPal datalake journey | teradata - edge of next | san diego | 2017 october ...PayPal datalake journey | teradata - edge of next | san diego | 2017 october ...
PayPal datalake journey | teradata - edge of next | san diego | 2017 october ...
 
Presto: Fast SQL-on-Anything (including Delta Lake, Snowflake, Elasticsearch ...
Presto: Fast SQL-on-Anything (including Delta Lake, Snowflake, Elasticsearch ...Presto: Fast SQL-on-Anything (including Delta Lake, Snowflake, Elasticsearch ...
Presto: Fast SQL-on-Anything (including Delta Lake, Snowflake, Elasticsearch ...
 
CData - Triangle Woodard Group - QuickBooks
CData - Triangle Woodard Group - QuickBooksCData - Triangle Woodard Group - QuickBooks
CData - Triangle Woodard Group - QuickBooks
 
Qlik and Confluent Success Stories with Kafka - How Generali and Skechers Kee...
Qlik and Confluent Success Stories with Kafka - How Generali and Skechers Kee...Qlik and Confluent Success Stories with Kafka - How Generali and Skechers Kee...
Qlik and Confluent Success Stories with Kafka - How Generali and Skechers Kee...
 
Integrate MongoDB & SQL data with a single REST API
Integrate MongoDB & SQL data with a single REST APIIntegrate MongoDB & SQL data with a single REST API
Integrate MongoDB & SQL data with a single REST API
 
Microsoft Azure Big Data Analytics
Microsoft Azure Big Data AnalyticsMicrosoft Azure Big Data Analytics
Microsoft Azure Big Data Analytics
 
Building Operational Data Lake using Spark and SequoiaDB with Yang Peng
Building Operational Data Lake using Spark and SequoiaDB with Yang PengBuilding Operational Data Lake using Spark and SequoiaDB with Yang Peng
Building Operational Data Lake using Spark and SequoiaDB with Yang Peng
 
Accelerate and modernize your data pipelines
Accelerate and modernize your data pipelinesAccelerate and modernize your data pipelines
Accelerate and modernize your data pipelines
 
Big Data Analytics in the Cloud with Microsoft Azure
Big Data Analytics in the Cloud with Microsoft AzureBig Data Analytics in the Cloud with Microsoft Azure
Big Data Analytics in the Cloud with Microsoft Azure
 
Dsdt meetup 2017 11-21
Dsdt meetup 2017 11-21Dsdt meetup 2017 11-21
Dsdt meetup 2017 11-21
 
DSDT Meetup Nov 2017
DSDT Meetup Nov 2017DSDT Meetup Nov 2017
DSDT Meetup Nov 2017
 
StreamCentral Technical Overview
StreamCentral Technical OverviewStreamCentral Technical Overview
StreamCentral Technical Overview
 
Data Stream Processing for Beginners with Kafka and CDC
Data Stream Processing for Beginners with Kafka and CDCData Stream Processing for Beginners with Kafka and CDC
Data Stream Processing for Beginners with Kafka and CDC
 
Developing Enterprise Consciousness: Building Modern Open Data Platforms
Developing Enterprise Consciousness: Building Modern Open Data PlatformsDeveloping Enterprise Consciousness: Building Modern Open Data Platforms
Developing Enterprise Consciousness: Building Modern Open Data Platforms
 
Webinar: How to Drive Business Value in Financial Services with MongoDB
Webinar: How to Drive Business Value in Financial Services with MongoDBWebinar: How to Drive Business Value in Financial Services with MongoDB
Webinar: How to Drive Business Value in Financial Services with MongoDB
 
L’architettura di classe enterprise di nuova generazione
L’architettura di classe enterprise di nuova generazioneL’architettura di classe enterprise di nuova generazione
L’architettura di classe enterprise di nuova generazione
 
Connecting your .Net Applications to NoSQL Databases - MongoDB & Cassandra
Connecting your .Net Applications to NoSQL Databases - MongoDB & CassandraConnecting your .Net Applications to NoSQL Databases - MongoDB & Cassandra
Connecting your .Net Applications to NoSQL Databases - MongoDB & Cassandra
 
Unlocking the Value of Your Data Lake
Unlocking the Value of Your Data LakeUnlocking the Value of Your Data Lake
Unlocking the Value of Your Data Lake
 

Recently uploaded

Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
e20449
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
IES VE
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Jay Das
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Anthony Dahanne
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
Ortus Solutions, Corp
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 

Recently uploaded (20)

Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 

CData Data Today: A Developer's Dilemma

  • 1. The State of Data Today A Developer’s Dilemma
  • 2. See the World as a Database Agenda • Introduction • A Sample Company’s Data • The Problem: Disparate APIs & SDKs • The Solution: Common Interfaces • Code Samples
  • 3. See the World as a Database • Over 2 decades of experience (since 1994) in building integration components. • 80+ Data Sources • ‘See the World as a Database’ About CData Software • Started: 1994 • Location: Chapel Hill, NC • CData Software (formerly RSSBus), a spin-off of /n software.
  • 4. See the World as a Database A Sample Company’s Data QuickBooks (Accounting & PoS) Exact Online (Warehousing & Logistics) HubSpot (CRM) Microsoft Project (Project/Scheduling) On-premises & cloud-based MySQL databases Facebook & Twitter (Social Media data)
  • 5. See the World as a Database Accessing A Sample Company’s Data REST APIs XML APIs SDKs Authentication Basic & OAuth
  • 6. See the World as a Database The Problem: Disparate APIs & SDKs REST/SOAP APIs & SDKs model data differently SDKs are language-dependent Changes break existing tools Lack of data-centric functionality
  • 7. See the World as a Database The Solution: A Common Interface Built using established standards Developers learn a single protocol Data-centric model Power of SQL (JOINs, filtering, aggregation) Easily browse data API/SDK/data model changes are covered
  • 8. See the World as a Database Digging In: How Do They Work? Mapping APIs & SDKs to a relational model Tables and Views correspond with resources One resource per row Nested values represented as JSON Sub-collections are treated as related tables SQL queries roughly match HTTP verbs Stored procedures are used for other operations
  • 9. See the World as a Database Digging In: How Do They Work? INSERT means more than creating a resource Major SQL features supported across sources Complex queries utilize API/SDK calls and memory Bulk operations are supported, where possible Advanced queries utilize API/SDK functionality
  • 10. See the World as a Database When are SDK/APIs better? Data streaming Event-driven applications Language-centric development
  • 11. See the World as a Database Code Sample: Reading MySQL Data using System.Data.CData.MySQL; String connectionString = "User=myUser;Password=myPassword;Database=myDatabase;Server=myServer;Port=3306;"; using (MySQLConnection conn = new MySQLConnection(connectionString)) { MySQLCommand cmd = new MySQLCommand("", conn); MySQLDataReader rdr; cmd.CommandText = "SELECT * FROM Orders"; rdr = cmd.ExecuteReader(); while (rdr.Read()) { //process results } }
  • 12. See the World as a Database Code Sample: Updating QuickBooks Data using System.Data.CData.QuickBooks; String connectionString = "User=test;Password=test;URL=http://localhost:8166;"; using (QuickBooksConnection conn = new QuickBooksConnection(connectionString)) { QuickBooksCommand cmd = new QuickBooksCommand("", conn); cmd.CommandText = "UPDATE Customers SET Name='Hook, Captain' WHERE Id = @myId"; cmd.Parameters.Add(new QuickBooksParameter("myId", "12345678-9876543210")); cmd.ExecuteNonQuery(); }
  • 13. See the World as a Database Calling Stored Procedures Stored procedures represent non-CRUD actions Called using name and passing appropriate parameters Results can be read, stored, and processed
  • 14. See the World as a Database Code Sample: Upload Media to Twitter using System.Data.CData.Twitter; String connectionString = "OAuthAccessToken=...;OAuthAccessTokenSecret=...;" + "OAuthClientId=...;OAuthClientSecret=...;"; using (TwitterConnection conn = new TwitterConnection(connectionString)) { TwitterCommand cmd = new TwitterCommand("UploadMedia", conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new TwitterParameter("MediaFilePath#1", "path/to/file1")); TwitterDataReader rdr = cmd.ExecuteReader(); while (rdr.Read()) { //process results } }
  • 15. See the World as a Database Desktop/Server apps call the Stored Procedure: GetOAuthAccessToken Web apps call the Stored Procedures: GetOAuthAuthorizationUrl GetOAuthAccessToken Optional: allow the Drivers to manage OAuth flow Performing OAuth Authentication
  • 16. See the World as a Database Code Sample: Exact Online OAuth Flow using System.Data.CData.ExactOnline; string connectionString = "Region=’United States’;OAuthClientId=...;OAuthClientSecret=...;"; string accessToken, refreshToken, expiresIn; accessToken = refreshToken = expiresIn = string.Empty; using (ExactOnlineConnection conn = new ExactOnlineConnection(connectionString)){ ExactOnlineCommand cmd = new ExactOnlineCommand("GetOAuthAccessToken", conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new ExactOnlineParameter("CallBackUrl", "https://localhost:7777")); ExactOnlineDataReader reader = cmd.ExecuteReader(); if(reader.Read()){ accessToken = (string)reader["OAuthAccessToken"]; refreshToken = (string)reader["OAuthRefreshToken"]; expiresIn = (string)reader["ExpiresIn"]; } } connectionString += "OAuthAccessToken=" + accessToken + ";OAuthRefreshToken=" + refreshToken + ";";
  • 17. See the World as a Database Data Sources
  • 18. See the World as a Database Thank You! In Conclusion Learning Disparate APIs/SDKs are Costly Common Interfaces Provide Easy Access to Data Questions?

Editor's Notes

  1. What am I here to show you today? The average company is running 15 to 20 Software-as-a-Service (SaaS) apps and at least as many on-premise apps. In this presentation, I’m going to show you a sample company’s different data stores, the disparate APIs & SDKs that are typically used to access that data, and then explain how common interfaces can be used to make integrating with that data much easier. Time permitting, I’ll show some code samples that demonstrate the common interface
  2. Introduce myself, >3 yrs with the company, worked through support -> development -> technical marketing. Started in 1994, foundation of over 2 decades. Located in Chapel Hill, just a few short hours up the road from here in Atlanta. We’re a spin-off of a spin-off. Our roots are in /n software, an integration components company. Spun out of that technology was RSSBus, which is a company that focuses on EDI integration. From RSSBus, we saw space for standards-based data integration and moved into that sphere, launching CData Software. CData Software (www.cdata.com) is a leading provider of data access and connectivity solutions specializing in the development of standard drivers for real-time access to both Cloud and On-Premises Applications, Databases, and APIs. Our drivers are universally accessible, providing access to data through established data standards and application platforms such as ODBC, JDBC, ADO.NET, Mobile (Android/Xamarin), OData, SQL Server SSIS, Microsoft BizTalk, Microsoft Excel, and more.
  3. Imagine a sample manufacturing company that has an online web store. They use QuickBooks for their accounting and point of sale, Exact Online for their warehousing/logistics, Hubspot as their CRM, MS Project as their project/scheduling management solution, and also want to be able to work with social media data and aggregate some other data in a MySQL database that is used to help populate some of their web content. This company wants to create a set of applications, both installed and web-based, to help them manage all of their data, and to build connections between their data sources. As a developer, your time is better spent focusing on your companies core competencies, not on building and maintaining rapidly changing service integrations
  4. REST API = HTTP calls to different endpoints for each kind of entry Exact Online, Facebook, Twitter, HubSpot, MS Project, QuickBooks Online, QuickBooks POS XML API = Document import/export, still web calls Exact Online SDK = Language specific class library Facebook, MS Project, MySQL, QuickBooks Desktop Connectors MySQL Basic & OAuth Authentication All sources have read/write capabilities.
  5. While protocols like OData exist, there is no consensus regarding how data is modelled in an API, or how actions, like sending an email, or “liking” a social media post, should be performed. On top of that, standards are rarely standard. Every source implements connectivity (OAuth etc.) a different way and SDKs written in the same language can have vastly different structures. One benefit of using an SDK is that they are typically built with the language (Java, .NET, C++, etc) in mind, but this is a problem if you aren’t as well versed in the languages available for the SDKs of your data source or the languages available don’t fit in your application model. Updates to SDKs and APIs can break your existing tools, due to changes in the data model, the class libraries, etc. If you integrate an SDK, update it, and there has been an interface change, your application will no longer compile. Some SDKs/APIs support relationships between datasets, but data-centric functionality, like JOINs, filtering, and aggregation are not typically natively supported, which means that you will have to code parts of that logic yourself.
  6. You may have noticed that MySQL had something that Sample Company’s other data sources didn’t: connectors. Connectors are built using established standards. Provide uniform experience for CRUD operations. Instead of your development teams being forced to learn 6 or more different protocols, including the varying authentication protocols, they only learn one. With connectors, you get wrappers that provide a common interface for working with data. The CData drivers take SQL queries and translate them to the appropriate request based on the API/protocol/SDK. While an SDK gives you more tightly bound language integration than a Driver ever will (a Java library will always be more 'Java' than a JDBC driver), a driver offers a more data-centric model for service interactivity. Using a Driver, developers can more easily work with the actual service data in meaningful ways (joins, filters, aggregates, caching, etc). SDK's require reams of additional code to implement a fraction of data capabilities available through our drivers. Drivers make data available in the IDEs of your language (Visual Studio, Eclipse, NetBeans, IntelliJ, even Excel). Drivers are more easily interchangeable and make applications more robust. They provide automatic loose-coupling between code and source API(the Driver interface doesn't change, even if the API/data model does).
  7. How to the CData Data Drivers work? They map an API/SDK to a relational model, allow you to treat any data source as if it were a database. Tables and views correspond roughly to resource collections. Individual singleton resources from a collection generally correspond to rows in a table or view, with attributes mapped to columns. Nested values in attributes may be represented as JSON strings in a table column (the driver’s SQL dialect supports JSON functions to manipulate these). Sub-collections may map to a table with a foreign-key relationship to the parent table (SalesOrders and SalesOrderLines) CRUD operations on resources correspond roughly to SQL statements, with HTTP verb GET aligning with SQL SELECT; POST, PUT and PATCH with INSERT or UPDATE; DELETE with DELETE; and HEAD with a SQL EXISTS predicate. Stored procedures are used judiciously to expose operations and resources not otherwise easily represented.
  8. How to the CData Data Drivers work? an INSERT SQL statement can post to a user’s Facebook feed or send a GMail message. Major SQL features are supported across sources, regardless of native API/SDK support A complex query that joins data will probably have to make one or more separate GET calls for each table resource collection, combining the data in memory an INSERT/UPDATE/DELETE of multiple rows may translate into multiple web service calls to PUT/POST/DELETE each new resource More advanced applications—for example, CRM and ERP applications—may support their own query languages (like Salesforce SOQL), or at least offer API methods for complex operations like joining master and detail data. Wherever such features are available, the SQL query optimizer will generate calls that exploit them.
  9. It’s not always best to use a connector/driver as the common interface to your data. For example, if you are streaming data, the SQL-like functionality of a driver/provider won’t give you access to the streaming data in a way that is meaningful. Similarly, if you are building an event-driven application (and not a data-driven one), then again, the SQL-like interface is a limiting factor. And, of course, if you and your development team primarily work in a single development language, then the native support offered by SDKs/APIs often makes the most sense.
  10. The ADO.NET Providers us similar classes to those found in the System.Data.SQLClient library: SQLConnection, SQLCommand, SQLDataReader, etc… In this code sample, we are simply reading data from a MySQL database. Follows the same connection process as SQLClient library, though the CData libraries will open the connection implicitly. Create connection string with connection properties Create the connection Create & define a command (SQL query) Execute the command Read the results The same action using the native MySQL SDK would require the developer to learn the SDK and then implement the SDK within the code. Which is all fine and well until the developer needs to connect to another data source.
  11. In this code sample, we see an example of updating QuickBooks data. To avoid SQL Injection (every remembers little Bobby Tables), we can use parameterized queries, using the Parameters property of our Command object and custom QuickBooksParameter(s). Because of the common interface, the developer can easily establish a connection to the QuickBooks instance and send the command to update the Customers entity. Without the common interface, the developer would be required to learn another SDK, which is very likely to look quite different from the MySQL SDK the developer would have needed to know for the prior query.
  12. With data connectors, stored procedures are used to represent actions that don’t quite fit into the CRUD model typically seen in SQL queries. For example, import or exporting attachments to emails or SharePoint items, performing OAuth Authentication, Creating/Deleting Entities, etc. Simply set the *CommandText to the name of the stored procedure and add the appropriate parameters. Results are managed in the DataReader and can be read, stored, or otherwise processed.
  13. Example of calling a stored procedure to upload a media file to twitter that can be later referenced. Parameters property serves the exact same function as the Parameters property of the familiar SQLCommand class. The data connectors use custom Parameter objects which extend the SQLParameter class. Once all of the appropriate parameters are added, the command can be execute and the results read. Thanks to the common interface, the developer is easily able to call the stored procedure and process the results.
  14. CData Drivers use stored procedures to allow you to manage the OAuth flow with the data source manually. If you are developing a desktop/server application, you can simply call the GetOAuthAccessToken stored procedure and make use of the light-weight, internal web server to receive the OAuth response. Once the response is received, the results can be stored and used in further connections. It is up to the developer to refresh expired (or expiring) tokens. For Web apps (not pictured), you will initially need to call the GetOAuthAuthorizationURL stored procedure first, which returns the url that should be used int he GetOAuthAuthorization stored procedure. Alternatively, you can allow the provider to manage the OAuth flow internally. Simply set the InitiateOAuth connection property to GETANDREFRESH and the provider will perform the initial OAuth flow and then store the OAuth credentials on disk and refresh them silently as needed. Regardless of how you manage the OAuth flow, the stored procedures will have the same names, regardless of data source.
  15. To perform OAuth, you need to set the necessary connection properties for connecting to the data source PLUS the OAuthClientId and OAuthClientSecret properties. While these property names are uniform across Providers, the original data source may use different names. Such cases are well-documented. With the connection configured, the developer can call the stored procedure, passing the appropriate parameter values. Again, thanks to the common interface, the developer is able to read the results and process them appropriately (in this case, appending the Auth Token to the connection string to create a valid connection for future actions.
  16. The Sample Company’s data represents a fraction of the actual number of data sources that a large, enterprise company would need to develop against. For companies with just the average number of sources (20+), the need for a common interface becomes more and more apparent. With CData drivers you gain access to 80+ Accounting, CRM, ERP, Collaboration, NoSQL, Big Data, Financial, and E-Commerce data sources, representing both on-premises and cloud-based instances.
  17. As businesses expand, data is more and more disparate, meaning that coding against that data becomes costly, both in terms of initial development and continued maintenance. Standards-based drivers offer a common interface that provides for easy, uniform access to your data. Are there any questions?