A Performance Comparison of Drivers for Salesforce.com



In this article, we compare the performance of the CData Drivers for Salesforce to the equivalent drivers produced by various vendors. We compare read performance, measuring the amount of time that it takes to query a Salesforce.com instance for data and process the result set in some way.

The test machine specifications are as follows:
Operating System: Windows 10
Processor: Intel® CoreTM 2 Quad CPU Q8400 @ 2.66GHz
Installed Memory (RAM): 6.00 GB
System type: 64-bit Operating System

Since the drivers are being compared side by side, the performance of the machine itself is relatively unimportant; what matters is how the drivers compare relative to one another.

The Data



For sample data, we populated a Salesforce sandbox with almost 600,000 accounts, to be read and processed by each of the drivers tested for the comparison. You can see the table details below:

Table Number of Rows
Account 593,919

Query



The main goal of this investigation was to compare the related performance of the drivers. We did this by running the same queries with each driver. To simulate actual processing of the data beyond simply reading from Salesforce, we stored the values of each row in an array (which was replaced for each row). For the tools that do not always use SQL, like the SSIS components, we configured the products to retrieve all of the available data from the Account table. In some cases, we limited the number of results using a LIMIT clause. You can see the exact queries sent by the drivers that communicate with SQL below.

  1. SELECT * FROM Account LIMIT 100000
  2. SELECT * FROM Account

Results



Below, you can see the performance of the various queries, based on the driver/platform.

SSIS Components

There are several vendors that provide components for connecting SQL Server with live Salesforce data. We compared those publicly available by requesting all data from the Account table and writing it to a text file. The times required for each product to process the results are in the table below.

SSIS Query Times by Company (in seconds)
Query CData Software Company 1 Company 2 Company 3 Company 4
~590,000 rows 122.2 (+58.5% - +543.9%) 193.7 328.4 378.2 786.9

As you can see above, the CData Software SSIS components are able to work with large result sets faster than any of the competing products, processing the account data at least twice as fast as most of the competing products while being 50% faster than the closest competitor.

The average runtime for the query is compared in the chart below:

Results for ~590,000 Rows

JDBC Drivers

CData Software and another Company (Competitor) provide JDBC drivers that allow you to connect to Salesforce data in Java applications and JDBC-compliant BI, reporting, and ETL tools. To compare the drivers, we used the queries described above, retrieving data from 100,000 accounts and data from approximately 590,000. The times required for each product to process the results are in the table below.

JDBC Query Times by Company (in seconds)
Query CData Software Competitor
~100,000 rows 20.3 (-2.3%) 19.8
~590,000 rows 47.5 (+87.8%) 89.2

As can be seen in the results, the CData JDBC Driver was able to work with large result sets faster than the Competitor JDBC driver, processing the largest data set nearly twice as fast as the Competitor driver.

The average runtime for each query is compared in the charts below:

Results for 100,000 Rows

Results for ~590,000 Rows

Mulesoft Connectors

CData Software and Mulesoft provide connectors that allow you to connect to Salesforce data in Mule applications and related tools, like Anypoint Studio. To compare the connectors we used the queries described above, retrieving data from 100,000 accounts and data from approximately 590,000*. The times required for each product to process the results are in the table below.

Mulesoft Query Times by Company (in seconds)
Query CData Software Native Connector
~100,000 rows 30.3 (+64.9%) 49.9
~590,000 rows* 128.2 (+99.6%) 256.0

* - The flows created made use of a Weave/Transform Message component. When we tried to use an Object to JSON transformer, we encountered Java heap space errors for the full data set with both connectors, highlighting a limitation of the transformer and not of the connectors themselves.

As can be seen in the results, the CData Mulesoft Connector for Salesforce was able to work with large result sets faster than the native connector, processing the largest data set about twice as fast.

The average runtime for each query is compared in the charts below:

Results for 100,000 Rows

Results for ~590,000 Rows

Conclusion



The CData Software drivers regularly prove to be faster than the competitors' equivalent products, particularly when dealing with large data sets. Our developers have spent countless hours optimizing the performance in processing the results returned by Salesforce to the point that the drivers seem to only be hindered by web traffic and server processing times.