Showing posts with label data share. Show all posts
Showing posts with label data share. Show all posts

Wednesday, September 11, 2024

Data share - Part V

In this blogpost we will see about how to consume the data in the available data share as recipient
 
On the target database (in this blogpost, It will be Autonomous datawarehouse(ADW) instance) create a database user (called SHARE_CONSUMER) that will be used to consume the data share that the SHARE_PROVIDER schema user created and shared with TRAINING_USER recipient, we chose to separate the  SHARE_PROVIDER schema from the SHARE_CONSUMER schema to simulate the real use-case of data sharing between provider and consumer.
 
In the target database, create the user account and grant required privileges.
 
admin@ADW19C> select banner_full from v$version;
 
BANNER_FULL
--------------------------------------------------------------------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.23.0.1.0
 
 
admin@ADW19C> select json_value( cloud_identity, '$.SERVICE' returning varchar2(10) ) services from v$pdbs;
 
SERVICES
----------
ADW
 
admin@ADW19C> create user share_consumer identified by "Good2go1234!";
 
User created.
 
admin@ADW19C> grant connect,resource,dwrole,unlimited tablespace to share_consumer;
 
Grant succeeded.
 
 
And REST enable the schema along with privileges for data sharing.
 
admin@ADW19C> ---
admin@ADW19C> --- Enable REST endpoints
admin@ADW19C> ---
admin@ADW19C> begin
  2     ords_admin.enable_schema(
  3             p_schema =>'SHARE_CONSUMER',
  4             p_enabled => true,
  5             p_url_mapping_type => 'BASE_PATH',
  6             p_url_mapping_pattern => 'share_consumer',
  7             p_auto_rest_auth => true);
  8  end;
  9  /
 
PL/SQL procedure successfully completed.
 
admin@ADW19C> ---
admin@ADW19C> --- Enable DATA sharing
admin@ADW19C> ---
admin@ADW19C>
admin@ADW19C> begin
  2     dbms_share.enable_schema(
  3             schema_name =>'SHARE_CONSUMER',
  4             enabled=>true );
  5  end;
  6  /
 
PL/SQL procedure successfully completed.
 
 
To consume a data share, a recipient user must have the required network connection to access the SHARE_PROVIDER user host machine that contains the data share using Port 443. This is a virtual port used for secure internet network traffic and connection purposes using the HTTPS secure protocol. In order to set the ACL on the host machine for the recipient, you as the admin user (or some other privileged user) will need the host machine endpoint value which you can find in the downloaded JSON profile file from the previous blogpost, listed below.
 
{
  "shareCredentialsVersion": 1,
  "endpoint": "https://g26be7c92912cdb-atpdemo19c.adb.us-ashburn-1.oraclecloudapps.com/ords/share_provider/_delta_sharing",
  "tokenEndpoint": "https://g26be7c92912cdb-atpdemo19c.adb.us-ashburn-1.oraclecloudapps.com/ords/share_provider/oauth/token",
  "bearerToken": "VfvFNjOWkt19MN4xfRgLMw",
  "expirationTime": "2024-04-10T05:54:00.102Z",
  "clientID": "Dbpdim8hNYgzYUKbxceUpw..",
  "clientSecret": "PUiThll6LC5vkuLbKmDhew.."
}
 
 
The ENDPOINT value where the data share is located is as follows.
 
https://g26be7c92912cdb-atpdemo19c.adb.us-ashburn-1.oraclecloudapps.com/ords/share_provider/_delta_sharing
 
from the above ENDPOINT value, copy the endpoint URL upto only the oraclecloudapps.com and remove anything after that. So in our demo we will use this as host value to setup ACL entries.
 
admin@ADW19C> ---
admin@ADW19C> --- granting the access privileges to the share providers host
admin@ADW19C> ---
admin@ADW19C>
admin@ADW19C> begin
  2     dbms_network_acl_admin.append_host_ace(
  3             host => 'g26be7c92912cdb-atpdemo19c.adb.us-ashburn-1.oraclecloudapps.com',
  4             lower_port => 443 ,
  5             upper_port => 443 ,
  6             ace => xs$ace_type(
  7                     privilege_list => xs$name_list('http', 'http_proxy'),
  8                     principal_name => upper('DWROLE'),
  9                     principal_type => xs_acl.ptype_db)
 10                     ) ;
 11  end;
 12  /
 
PL/SQL procedure successfully completed.
 
 
Next to create access credential for data share, we need to login as SHARE_CONSUMER user and use the profile downloaded from the previous blogpost will be used here.
 
share-consumer@ADW19C> declare
  2     l_clob clob;
  3     l_delta_profile clob;
  4     l_credential_base_name varchar2(80) := 'DEMO_PROVIDER2';
  5  begin
  6     l_delta_profile := q'# {
  7    "shareCredentialsVersion": 1,
  8    "endpoint": "https://g26be7c92912cdb-atpdemo19c.adb.us-ashburn-1.oraclecloudapps.com/ords/share_provider/_delta_sharing",
  9    "tokenEndpoint": "https://g26be7c92912cdb-atpdemo19c.adb.us-ashburn-1.oraclecloudapps.com/ords/share_provider/oauth/token",
 10    "bearerToken": "VfvFNjOWkt19MN4xfRgLMw",
 11    "expirationTime": "2024-04-10T05:54:00.102Z",
 12    "clientID": "Dbpdim8hNYgzYUKbxceUpw..",
 13    "clientSecret": "PUiThll6LC5vkuLbKmDhew.."
 14  } #' ;
 15
 16     l_clob := dbms_share.create_credentials(
 17             credential_base_name => l_credential_base_name,
 18             delta_profile => l_delta_profile );
 19
 20  end;
 21  /
 
PL/SQL procedure successfully completed.
 
share-consumer@ADW19C> select credential_name
  2  from user_credentials
  3  where credential_name like 'DEMO_PROVIDER2%';
 
CREDENTIAL_NAME
-----------------------------------------------------
DEMO_PROVIDER2$SHARE_CRED
DEMO_PROVIDER2$SHARE_CRED$TOKEN_REFRESH_CRED
 
 
To create a table on top of the data share object, the recipient needs to get the list of the schemas and tables being shared. we can use the DISCOVER_AVAILABLE_TABLES table function to get this list.
 
share-consumer@ADW19C> select share_name, schema_name,table_name
  2  from dbms_share.discover_available_tables(
  3     endpoint => 'https://g26be7c92912cdb-atpdemo19c.adb.us-ashburn-1.oraclecloudapps.com/ords/share_provider/_delta_sharing',
  4     credential_name => 'DEMO_PROVIDER2$SHARE_CRED' );
 
SHARE_NAME           SCHEMA_NAME          TABLE_NAME
-------------------- -------------------- --------------------
DEMO_SHARE           SHARE_PROVIDER       BIG_TABLE
 
 
For the repeated access to the available data share and tables in the share, subscribe to the data share provider by creating new share provider name.
 
share-consumer@ADW19C> begin
  2     dbms_share.create_share_provider(
  3             provider_name => 'MY_DEMO_PROVIDER',
  4             endpoint => 'https://g26be7c92912cdb-atpdemo19c.adb.us-ashburn-1.oraclecloudapps.com/ords/share_provider/_delta_sharing' );
  5  end;
  6  /
 
PL/SQL procedure successfully completed.
 
Specify the credentials needed to access the data share endpoint.
 
share-consumer@ADW19C> begin
  2     dbms_share.set_share_provider_credential(
  3             provider_name => 'MY_DEMO_PROVIDER',
  4             share_credential => 'DEMO_PROVIDER2$SHARE_CRED' );
  5  end;
  6  /
 
PL/SQL procedure successfully completed.
 
Query the available shares for this provider
 
share-consumer@ADW19C> select * from dbms_share.discover_available_shares(share_provider=> 'MY_DEMO_PROVIDER');
 
PROVIDER_NAME        PROVIDER_OWNER       AVAILABLE_ CREATED                        UPDATED
-------------------- -------------------- ---------- ------------------------------ ------------------------------
MY_DEMO_PROVIDER     SHARE_CONSUMER       DEMO_SHARE 10-APR-24 10.35.07.911386 AM   10-APR-24 10.35.07.911386 AM
 
Query the available tables in the data share
 
share-consumer@ADW19C> select schema_name , table_name
  2  from dbms_share.discover_available_tables(
  3     share_provider=> 'MY_DEMO_PROVIDER',
  4     share_name => 'DEMO_SHARE');
 
SCHEMA_NAME          TABLE_NAME
-------------------- --------------------
SHARE_PROVIDER       BIG_TABLE
 
Creating a new share link and view using the data share table.
 
share-consumer@ADW19C> begin
  2     dbms_share.create_or_replace_share_link(
  3             share_link_name =>'MY_SALES_DATA',
  4             share_provider => 'MY_DEMO_PROVIDER',
  5             share_name => 'DEMO_SHARE' );
  6  end;
  7  /
 
PL/SQL procedure successfully completed.
 
Use the new share link to create a view over the shared table.
 
share-consumer@ADW19C> begin
  2     dbms_share.create_share_link_view(
  3             view_name       => 'CUST_SALES_VW',
  4             share_link_name  => 'MY_SALES_DATA',
  5             share_schema_name  => 'SHARE_PROVIDER',
  6             share_table_name => 'BIG_TABLE' );
  7  end;
  8  /
 
PL/SQL procedure successfully completed.
 
share-consumer@ADW19C> desc CUST_SALES_VW
 Name                                Null?    Type
 ----------------------------------- -------- -------------------------
 OWNER                                        VARCHAR2(128)
 OBJECT_NAME                                  VARCHAR2(128)
 SUBOBJECT_NAME                               VARCHAR2(128)
 OBJECT_ID                                    NUMBER
 DATA_OBJECT_ID                               NUMBER
 OBJECT_TYPE                                  VARCHAR2(23)
 CREATED                                      DATE
 LAST_DDL_TIME                                DATE
 TIMESTAMP                                    VARCHAR2(19)
 STATUS                                       VARCHAR2(7)
 TEMPORARY                                    VARCHAR2(1)
 GENERATED                                    VARCHAR2(1)
 SECONDARY                                    VARCHAR2(1)
 NAMESPACE                                    NUMBER
 EDITION_NAME                                 VARCHAR2(128)
 SHARING                                      VARCHAR2(18)
 EDITIONABLE                                  VARCHAR2(1)
 ORACLE_MAINTAINED                            VARCHAR2(1)
 APPLICATION                                  VARCHAR2(1)
 DEFAULT_COLLATION                            VARCHAR2(100)
 DUPLICATED                                   VARCHAR2(1)
 SHARDED                                      VARCHAR2(1)
 CREATED_APPID                                NUMBER
 CREATED_VSNID                                NUMBER
 MODIFIED_APPID                               NUMBER
 MODIFIED_VSNID                               NUMBER
 ID                                           NUMBER
 
share-consumer@ADW19C> select count(*) from CUST_SALES_VW;
 
  COUNT(*)
----------
   1000000
 

Friday, September 6, 2024

Data share - Part IV

In this blogpost we will see about how to create and Authorize data share recipient. A recipient can access the data in the share and can have access to multiple shares. If you remove a recipient, that recipient loses access to all shares it could previously access. The data share provider will create and authorize a new recipient that will access data share and the TABLE / Data source in the share. Then we will provide a new recipient with activation link or the JSON config that is needed to create credential to access the data share.
 
as a SHARE_PROVIDER user, we need to create a new data share recipient named "Training_user"
 
share-provider@ATP19C> begin
  2     dbms_share.create_share_recipient(
  3             recipient_name => 'training_user',
  4             email => '*************' );
  5  end;
  6  /
 
PL/SQL procedure successfully completed.
 
share-provider@ATP19C> select recipient_name,updated
  2  from user_share_recipients;
 
RECIPIENT_NAME       UPDATED
-------------------- -------------------------------------
TRAINING_USER        08-APR-24 11.26.11.841719 AM +05:30
 
 
as a SHARE_PROVIDER user, grant the recipient access privilege to data share.
 
share-provider@ATP19C> begin
  2     dbms_share.grant_to_recipient(
  3             share_name => 'DEMO_SHARE',
  4             recipient_name => 'training_user',
  5             auto_commit => true );
  6  end;
  7  /
 
PL/SQL procedure successfully completed.
 
share-provider@ATP19C> select recipient_name, updated
  2  from user_share_recipient_grants
  3  where share_name ='DEMO_SHARE';
 
RECIPIENT_NAME       UPDATED
-------------------- -------------------------------------
TRAINING_USER        08-APR-24 11.26.38.477501 AM +05:30
 
So the training_user recipient has the access privilege to only one data share.
 
as a SHARE_PROVIDER user, generate the activation link and enable the Authorized recipient to download the delta sharing profile json configuration file
 
share-provider@ATP19C> exec dbms_output.put_line( dbms_share.get_activation_link('training_user') );
https://g26be7c92912cdb-atpdemo19c.adb.us-ashburn-1.oraclecloudapps.com/ords/_adpshr/delta-sharing/download?key=7456B7CE7BDCC383C66A522EBC7DDD7D9D291EA0891FD26DE2F76F895A6917B15FAA4537E52CF8DD5363DADBE48FE1676436c2hhcmVfcHJvdmlkZXI=
 
PL/SQL procedure successfully completed.
 
Copy the activation link URL (highlighted above) that was provided to you by your share provider and paste it in your web browser's address bar, and then press [Enter]. The Autonomous Database Data Sharing page is displayed. To download the config file, click Get Profile Information.
 
 


 
Once if you click GET PROFILE INFORMATION, the output of the script is downloaded as text file, the sample content of text file for the profile information will be like this.
 
{
  "shareCredentialsVersion": 1,
  "endpoint": "https://g26be7c92912cdb-atpdemo19c.adb.us-ashburn-1.oraclecloudapps.com/ords/share_provider/_delta_sharing",
  "tokenEndpoint": "https://g26be7c92912cdb-atpdemo19c.adb.us-ashburn-1.oraclecloudapps.com/ords/share_provider/oauth/token",
  "bearerToken": "VfvFNjOWkt19MN4xfRgLMw",
  "expirationTime": "2024-04-10T05:54:00.102Z",
  "clientID": "Dbpdim8hNYgzYUKbxceUpw..",
  "clientSecret": "PUiThll6LC5vkuLbKmDhew.."
}
 
we need this profile information to consume the data share, which we will see in the next blogpost.

Tuesday, August 27, 2024

Data share - Part III

In this blogpost we will see about how to create, populate, and publish the data share. A data share is a named entity in the provider instance and It can be a group of datasets shared as a single entity. The share is a logical container that contains objects such as tables/view that we can share with the data recipient. An authorized data share recipient can access the share and all tables in it.
 
 
As a share provider create a named data share DEMO_SHARE using the DATA_SHARE_STORAGE_LINK refers to the storage link created in the previous blog post.
 
share-provider@ATP19C> begin
  2     dbms_share.create_share(
  3             share_name => 'DEMO_SHARE',
  4             share_type => 'VERSIONED',
  5             storage_link_name => 'DATA_SHARE_STORAGE_LINK');
  6  end;
  7  /
 
PL/SQL procedure successfully completed.
 
share-provider@ATP19C> select share_name, current_version
  2  from user_shares
  3  where share_name ='DEMO_SHARE';
 
SHARE_NAME           CURRENT_VERSION
-------------------- ---------------
DEMO_SHARE
 
before we publish the share, the CURRENT_VERSION will be null, after we publish the share, the column CURRENT_VERSION will be incremental value.
 
Add data source to the data share.
 
share-provider@ATP19C> begin
  2     dbms_share.add_to_share(
  3             share_name => 'DEMO_SHARE',
  4             table_name => 'BIG_TABLE',
  5             owner => user,
  6             share_table_name => 'BIG_TABLE');
  7  end;
  8  /
 
PL/SQL procedure successfully completed.
 
share-provider@ATP19C> select share_table_name, table_name, table_owner
  2  from user_share_tables
  3  where share_name ='DEMO_SHARE';
 
SHARE_TABLE_NAME     TABLE_NAME           TABLE_OWNER
-------------------- -------------------- --------------------
BIG_TABLE            BIG_TABLE            SHARE_PROVIDER
 
Upto this point, share and its table are stored in database only. the call to publish_share API will offload data to OCI buckets and make it accessible to recipients.
 
admin@ATP19C> exec dbms_share.update_default_share_property('JOB_TYPE','DBMS_CLOUD');
 
PL/SQL procedure successfully completed.
 
share-provider@ATP19C> exec dbms_share.publish_share( share_name => 'DEMO_SHARE' );
 
PL/SQL procedure successfully completed.
 
Call to the PUBLISH_SHARE API will offloads data to the Cloud Store and makes it accessible to recipients that you define and authorize later.
 
share-provider@ATP19C> select share_version, status
  2  from user_share_versions
  3  where share_name ='DEMO_SHARE';
 
SHARE_VERSION STATUS
------------- -----------
            1 EXPORTING
 
If the status shows exporting, then publishing process is not yet complete, we need to wait for few mins.
when we publish a "VERSIONED" share, the tool generates and stores the data share as parquet files
in the specified object storage bucket, any authenticated data share recipients can directly access the share in the bucket. And you don’t need to proceed further till the EXPORTING status change to CURRENT status.
 
share-provider@ATP19C> select share_version, status
  2  from user_share_versions
  3  where share_name ='DEMO_SHARE';
 
SHARE_VERSION STATUS
------------- -----------
            1 CURRENT
 
share-provider@ATP19C> variable uri varchar2(95)
share-provider@ATP19C> exec :uri := 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/idcglquusbz6/b/DATA_SHARE_BUCKET/o/';
 
PL/SQL procedure successfully completed.
 
share-provider@ATP19C>
share-provider@ATP19C> col object_name for a85
share-provider@ATP19C> select object_name, bytes
  2      from dbms_cloud.list_objects(
  3                 credential_name => 'SHARE_BUCKET_CREDENTIAL',
  4                 location_uri => :uri );
 
OBJECT_NAME                                                                                BYTES
------------------------------------------------------------------------------------- ----------
DEMO_SHARE_528631/SHARE_PROVIDER/BIG_TABLE/V1_1S_1_20240408T043228502295Z.parquet       24899814
 
This tool generates and stores the data share as parquet files in the specified bucket & any authenticated data share recipient can directly access the share in the bucket.
 

Tuesday, August 20, 2024

Data share - Part II

In this blogpost we will see about how to setup the share provider along with the necessary roles and privileges.
 
As an ADMIN user create a user called SHARE_PROVIDER, along with necessary privileges.
 
admin@ATP19C> create user share_provider identified by "Good2go1234!";
 
User created.
 
admin@ATP19C> grant connect, resource, unlimited tablespace, dwrole to share_provider ;
 
Grant succeeded.
 
admin@ATP19C>
 
then REST enable that schema using ORDS_ADMIN API
 
admin@ATP19C> begin
  2     ords_admin.enable_schema(
  3             p_schema =>'SHARE_PROVIDER',
  4             p_enabled => true,
  5             p_url_mapping_type => 'BASE_PATH',
  6             p_url_mapping_pattern => 'share_provider',
  7             p_auto_rest_auth => true);
  8  end;
  9  /
 
PL/SQL procedure successfully completed.
 
Then enable the data sharing access for the schema.
 
admin@ATP19C> begin
  2     dbms_share.enable_schema(
  3             schema_name =>'SHARE_PROVIDER',
  4             enabled=>true );
  5  end;
  6  /
 
PL/SQL procedure successfully completed.
 
Now login to the newly created user and run the below query to verify the required privileges to share objects
 
share-provider@ATP19C> select dbms_share.can_create_share(user) from dual;
 
DBMS_SHARE.CAN_CREATE_SHARE(USER)
---------------------------------
                                1
 
The value of 0 returned by the above query, indicates that the user doesn’t have privileges to share objects, and a value of 1 returned indicates the user have the required privileges to share objects.
 
Create an object storage bucket named DATA_SHARE_BUCKET to store the data share data in object storage and create a link to the object storage bucket and associate the access credentials with that bucket. Follow the steps listed here
to access data in object store, we need to enable database user to authenticate itself with the object store using your OCI object store account and credentials.
 
share-provider@ATP19C> variable uri varchar2(95)
share-provider@ATP19C> exec :uri := 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/idcglquusbz6/b/DATA_SHARE_BUCKET/o/';
 
PL/SQL procedure successfully completed.
 
share-provider@ATP19C>
share-provider@ATP19C> select object_name, bytes
  2  from dbms_cloud.list_objects(
  3             credential_name => 'SHARE_BUCKET_CREDENTIAL',
  4             location_uri => :uri );
 
no rows selected
 
create a named storage link that points to the object storage buckets URI.
 
share-provider@ATP19C> print uri
 
URI
------------------------------------------------------------------------------------------
https://objectstorage.us-ashburn-1.oraclecloud.com/n/idcglquusbz6/b/DATA_SHARE_BUCKET/o/
 
share-provider@ATP19C> begin
  2     dbms_share.create_cloud_storage_link(
  3             storage_link_name => 'data_share_storage_link',
  4             uri => :uri );
  5  end;
  6  /
 
PL/SQL procedure successfully completed.
 
share-provider@ATP19C>
share-provider@ATP19C> @printtbl ' select * from user_lineage_cloud_storage_links '
STORAGE_LINK_NAME             : "DATA_SHARE_STORAGE_LINK"
STORAGE_LINK_ID               : "173"
URI                           : "https://objectstorage.us-ashburn-1.oraclecloud.com/n/idcglquusbz6/b/DATA_SHARE_BUCKET/o/"
METADATA_PATH                 : ""STORAGE_LINK"."DATA_SHARE_STORAGE_LINK""
CREDENTIAL_NAME               : ""
METADATA                      : ""
APPLICATION_ID                : "6"
CREATED                       : "07-APR-24 05.20.25.028435 PM +05:30"
UPDATED                       : "07-APR-24 05.20.25.028435 PM +05:30"
-----------------
 
PL/SQL procedure successfully completed.
 
Associate the storage link – created above with the OCI native credentials.
 
share-provider@ATP19C> begin
  2     dbms_share.set_storage_credential(
  3             storage_link_name => 'data_share_storage_link',
  4             credential_name => 'SHARE_BUCKET_CREDENTIAL' );
  5  end;
  6  /
 
PL/SQL procedure successfully completed.
 
share-provider@ATP19C> @printtbl ' select * from user_lineage_cloud_storage_links '
STORAGE_LINK_NAME             : "DATA_SHARE_STORAGE_LINK"
STORAGE_LINK_ID               : "173"
URI                           : "https://objectstorage.us-ashburn-1.oraclecloud.com/n/idcglquusbz6/b/DATA_SHARE_BUCKET/o/"
METADATA_PATH                 : ""STORAGE_LINK"."DATA_SHARE_STORAGE_LINK""
CREDENTIAL_NAME               : "SHARE_BUCKET_CREDENTIAL"
METADATA                      : ""
APPLICATION_ID                : "6"
CREATED                       : "07-APR-24 05.20.25.028435 PM +05:30"
UPDATED                       : "07-APR-24 05.20.25.028435 PM +05:30"
-----------------
 
PL/SQL procedure successfully completed.
 
 

Wednesday, August 14, 2024

Data share - Part I

Data sharing enable you to share DATA with one or more customers, Oracle Autonomous database enables you to create share using data sharing tool (which was a mix of managed ORDS services and DBMS_SHARE API), the data sharing consists of two steps.
 
  •          The provider provides the data share for access.
  •          The consumer receives the access from the published shares.
 
The Oracle Data sharing in general is based on the open delta sharing protocol, providing a simple REST based API to share data in paraquet format. Data is made accessible by data sharing provider (such as Oracle Autonomous database) to data sharing recipient (such as Power BI, Tableau, Apache spark or Java)
 
In the traditional methods of data sharing users typically follow one of these approaches
 
  •          Send data via email.
  •          Share data thorough FTP server
  •          Use application specific API for data extraction.
  •          Utilize vendor specific tools to copy required data
 
While the traditional methods work in general, they come up with their own drawbacks.
 
  •          Managing separate process for data extraction – labour intensive operation
  •          Extracting and duplication data is prone to staleness.
  •         Architecture / process is difficult to maintain and hard to scale.
  •          Redundant data extraction can introduce format compatibility issues.
 
The Morden way of data sharing must be open, secure, real-time, vendor-free and avoid the pitfalls of extracting and duplicating data for individual consumers of data in collaborative environment. Delta Sharing is an open protocol for secure real-time data exchange of large datasets that satisfies all these criteria, supported by multiple clients and program languages, and vendor agnostic. The delta sharing protocol is aimed at solving these following problems.
 
  •          Share data without copying it to another system.
  •          Producer controls the state of data (version of data)
  •          Be an open cross-platform solution.
  •          Support a wide range of clients such as Power BI, Tableau, Apache Spark, pandas and Java
  •          Provide flexibility to consume data using the tools of choice for BI, machine learning and AI use cases.
  •          Provide strong security, auditing, and governance.
  •          Scale to massive data sets
 
At a high level the delta sharing protocol works as follows
 
  •          The share provider user creates and publishes a data share that can be shared with one or more recipients.
  •          The share provider user creates and authorizes recipients.
  •           Every recipient will get a personal activation link to download their own .JSON profile with the necessary information to access their data share.
  •          The recipient subscribes to the data share provider by using the .JSON configuration profile.
  •          The recipient retrieves data from the share.
The overall architectural approach for delta sharing protocol looks like this
 
 


 
In the next series of blogpost we will see about step-by-step approach for setting up delta sharing protocol using Autonomous database and managed ORDS.