BULK API - WordPress.com · 2019. 10. 16. · • Bulk API xử lý data bằngcách tạoJob, Job...

18
Copyright 2019. Neos Corporation All Rights Reserved BULK API Edited by [email protected] 2019 – 10 - 11 1

Transcript of BULK API - WordPress.com · 2019. 10. 16. · • Bulk API xử lý data bằngcách tạoJob, Job...

Page 1: BULK API - WordPress.com · 2019. 10. 16. · • Bulk API xử lý data bằngcách tạoJob, Job chứamộthoặcnhiều batches • Mộtbatch là mộttậprecords đượcgửitớiServer

Copyright 2019. Neos Corporation All Rights Reserved

BULK API

Edited by [email protected] – 10 - 11

1

Page 2: BULK API - WordPress.com · 2019. 10. 16. · • Bulk API xử lý data bằngcách tạoJob, Job chứamộthoặcnhiều batches • Mộtbatch là mộttậprecords đượcgửitớiServer

Copyright 2019. Neos Corporation All Rights Reserved2

NỘI DUNG

Tổng quan về Salesforce API & Bulk API

Bulk API làm được những gì?

Những hạn chế của Bulk API

Hoạt động của Bulk API

Page 3: BULK API - WordPress.com · 2019. 10. 16. · • Bulk API xử lý data bằngcách tạoJob, Job chứamộthoặcnhiều batches • Mộtbatch là mộttậprecords đượcgửitớiServer

Copyright 2019. Neos Corporation All Rights Reserved3

TỔNG QUAN VỀ SALESFORCE API & BULK API (1)Tổng quan về Salesforce API

Salesforce có 4 loại API phổ biến và cơ bản: REST API, SOAP API, Bulk API, và Streaming API

Page 4: BULK API - WordPress.com · 2019. 10. 16. · • Bulk API xử lý data bằngcách tạoJob, Job chứamộthoặcnhiều batches • Mộtbatch là mộttậprecords đượcgửitớiServer

Copyright 2019. Neos Corporation All Rights Reserved4

TỔNG QUAN VỀ SALESFORCE API & BULK API (2)

• REST API dựa trên nguyên tắc RESTful, nó hoạt độngqua REST resources và HTTP– Create, read, update, và delete (CRUD) records, search hay

query data, retrieve object metadata, và access thông tin vềlimits trong org. REST API hỗ trợ cả XML và JSON

– Hoạt động đồng bộ (real – time)– Có Framework request và response nhẹ và dễ dùng nên phù

hợp cho các ứng dụng mobile và web• SOAP API sử dụng file Web Services Description

Language (WSDL) để định nghĩa các tham số truy cậpdata thông qua API– Hầu hết các tính năng đều có trong REST API, Chỉ hỗ trợ XML– Hoạt động đồng bộ (real – time)– Do sử dụng file WSDL để giao tiếp nên phù hợp cho các ứng

dụng tích hợp server-to-server

Page 5: BULK API - WordPress.com · 2019. 10. 16. · • Bulk API xử lý data bằngcách tạoJob, Job chứamộthoặcnhiều batches • Mộtbatch là mộttậprecords đượcgửitớiServer

Copyright 2019. Neos Corporation All Rights Reserved5

TỔNG QUAN VỀ SALESFORCE API & BULK API (3)Tổng quan về Salesforce API

• Bulk API là RESTful API đặc biệt, nó được thiết kế để xửlý cho một lượng lớn records (>= 50,000 records) cùngmột lúc– Hoạt động không đồng bộ - asynchronous– Hiện tại có 2 version (1.0 và 2.0), Bulk API 2.0 sử dụng framework REST API

cung cấp khả năng tương tự Bulk API, nhưng hiện tại Bulk API 2.0 không hỗ trợQuery hay QueryAll

– Hỗ trợ các định dạng: CSV, JSON, XML– Bulk api có performance rất tốt với những task cần xử lý dữ liệu lớn, chẳng hạn

như: Import data vào Org trong lần đầu tiên,…– Để cải thiện Performance và giảm số lượng request API cho một tập lớn data thì

ta sử dụng Bulk API

• Streaming API là một API đặc biệt, là một Event API, để thiết lập cácthông báo, là các trigger được thực hiện khi có sự thay đổi data– Sử dụng model publish-subscribe để hoạt động– Phù hợp với các ứng dụng cần phải thường xuyên kiểm tra sự thay đổi data để

thực hiện một nhiệm vụ nào đó

Page 6: BULK API - WordPress.com · 2019. 10. 16. · • Bulk API xử lý data bằngcách tạoJob, Job chứamộthoặcnhiều batches • Mộtbatch là mộttậprecords đượcgửitớiServer

Copyright 2019. Neos Corporation All Rights Reserved6

BULK API LÀM ĐƯỢC NHỮNG GÌ? (1)

• Xử lý hiệu quả đối với số lượng lớn records• Thực hiện query, queryAll, insert, update, upsert, hoặc

delete• Bulk api hoạt động không đồng bộ trong background của

Salesforce• Sử dụng method POST hoặc GET của HTTP để send và

receive CSV, XML, JSON data• Cách dễ nhất để sử dụng Bulk API là dung Data Loader

sử dụng file CSV – sử dụng Data Loader ta không phảiviết ứng dụng Client

Page 7: BULK API - WordPress.com · 2019. 10. 16. · • Bulk API xử lý data bằngcách tạoJob, Job chứamộthoặcnhiều batches • Mộtbatch là mộttậprecords đượcgửitớiServer

Copyright 2019. Neos Corporation All Rights Reserved7

NHỮNG HẠN CHẾ CỦA BULK API (1)

• Batch limit: submit up to 10,000 batches in every 24 hours

• Batch lifespan: batch, job nếu quá 7 ngày sẽ bị xóa khỏihang đợi– Không thể tạo các batch kết hợp với các job đã hơn 24h

• Batch size– Load data đối với các file đơn CSV, XML, JSON: max là 10MB– 1 batch thì maximum là 10,000 records , có thể edit thuộc tính

Secure Agent để thiết định size– 1 batch maximum 10,000,000 characters cho toàn bộ data trong

batch– 1 field maximum 32,000 characters– 1 record maximum 5,000 fields– 1 record maximum 400,000 characters

Page 8: BULK API - WordPress.com · 2019. 10. 16. · • Bulk API xử lý data bằngcách tạoJob, Job chứamộthoặcnhiều batches • Mộtbatch là mộttậprecords đượcgửitớiServer

Copyright 2019. Neos Corporation All Rights Reserved8

NHỮNG HẠN CHẾ CỦA BULK API (2)

• Binary content– Tên file không vượt quá 512 bytes– File zip không vượt quá 10MB– Tổng file unzip không vượt quá 20MB– Maximum 1 file zip chứa 1000 files, các thư mục không được tính ở đây

• Hiện tại các fields base64 không hỗ trợ trong queries Bulk API• Bulk API query không hỗ trợ các loại SOQL sau

– COUNT– ROLLUP– SUM– GROUP BY CUBE– OFFSET– Nested SOQL queries

• Bulk API không hỗ trợ việc login tới ORG, mà chúng ta phải sử dụngSOAP API để login

Refer: https://developer.salesforce.com/docs/atlas.en-us.salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_platform_bulkapi.htm

Page 9: BULK API - WordPress.com · 2019. 10. 16. · • Bulk API xử lý data bằngcách tạoJob, Job chứamộthoặcnhiều batches • Mộtbatch là mộttậprecords đượcgửitớiServer

Copyright 2019. Neos Corporation All Rights Reserved9

Hoạt động của Bulk API – Tổng quan

• Bulk API xử lý data bằng cách tạo Job, Job chứa một hoặc nhiềubatches

• Một batch là một tập records được gửi tới Server bằng request HTTP POST

• Mỗi batch được xử lý độc lập trên Server, và chúng có thể xử lýparallel. Nó phụ thuộc vào client chia toàn bộ tập dữ liệu thành cácbatches phù hợp

• Một job được thể hiện bằng Jobinfo resource, resource này đượcsử dụng để tạo job, get trạng thái, và thay đổi trạng thái của job

• Một batch được tạo bằng việc submit một CSV, XML, JSON là thểhiện của một tập records. Trạng thái của batch được thể hiện làBatchInfo resource. Khi một batch hoàn thành, kết quả mỗi record làsẵn trong tập result resource

Page 10: BULK API - WordPress.com · 2019. 10. 16. · • Bulk API xử lý data bằngcách tạoJob, Job chứamộthoặcnhiều batches • Mộtbatch là mộttậprecords đượcgửitớiServer

Copyright 2019. Neos Corporation All Rights Reserved10

Hoạt động của Bulk API - Flow

Step 1: Login using the SOAP API Step 2: Create a Job

Step 3: Add a Batch to the JobStep 4: Close the Job

Step 5: Check Batch Status Step 6: Retrieve Batch Results

Begin

End

Page 11: BULK API - WordPress.com · 2019. 10. 16. · • Bulk API xử lý data bằngcách tạoJob, Job chứamộthoặcnhiều batches • Mộtbatch là mộttậprecords đượcgửitớiServer

Copyright 2019. Neos Corporation All Rights Reserved11

Hoạt động của Bulk API – Detail (1)Step 1: Log In Using the SOAP API

• Tạo file WSDL login.xml chứa nội dung sau:

• Thay thế– your_username bằng username login vào ORG– your_password = {password login vào ORG} + {Security token}

• Sau đó thực hiện lệnh sau để login vào ORLcurl https://login.salesforce.com/services/Soap/u/47.0 -H "Content-Type: text/xml; charset=UTF-8" -H "SOAPAction: login" -d @login.xml

• Kết quả trả về chứa <serverUrl> và <sessionId>– Các giá trị này sẽ sử dụng để request tới Bulk API ở các Step sau

Page 12: BULK API - WordPress.com · 2019. 10. 16. · • Bulk API xử lý data bằngcách tạoJob, Job chứamộthoặcnhiều batches • Mộtbatch là mộttậprecords đượcgửitớiServer

Copyright 2019. Neos Corporation All Rights Reserved12

Hoạt động của Bulk API – Detail (2)Step 2: Create a Job

• Đầu tiên phải tạo Job, trong Job sẽ chỉ định:– Object, ví dụ: Contact– Thao tác thực hiện: query, queryAll, insert, update, upsert, delete

=> Ví dụ, tạo file job.xml nội dung như sau:

• Thực hiện tạo job bằng việc thực thi câu lệnhcurl https://instance.salesforce.com/services/async/47.0/job -H "X-SFDC-Session:sessionId" -H "Content-Type: application/xml; charset=UTF-8" -d @job.xml

• Trong đó instance là một phần trong <serverUrl>, sessionId là giá trịcủa <sessionId> trong giá trị trả về của Step 1

• Kết quả trả về dạng XML có chứ Job ID, status, …. Job ID được sửdụng cho các Step tiếp theo

Page 13: BULK API - WordPress.com · 2019. 10. 16. · • Bulk API xử lý data bằngcách tạoJob, Job chứamộthoặcnhiều batches • Mộtbatch là mộttậprecords đượcgửitớiServer

Copyright 2019. Neos Corporation All Rights Reserved13

Hoạt động của Bulk API – Detail (3)Step 3: Add a Batch to the Job

• Tạo 2 batch bằng file csv [data1.csv, data2.csv] với mỗi batch 2 records như sau

• Add batch tới Job bằng câu lệnh sau, với URI như tạo job nhưng bổsung jobId/batch. jobId được trả về ở Step tạo Job

curl https://instance.salesforce.com/services/async/47.0/job/jobId/batch -H "X-SFDC-Session: sessionId" -H "Content-Type: text/csv; charset=UTF-8" --data-binary @data1.csvcurl https://instance.salesforce.com/services/async/47.0/job/jobId/batch -H "X-SFDC-Session: sessionId" -H "Content-Type: text/csv; charset=UTF-8" --data-binary @data2.csv

• Kết quả trả về mỗi lệnh chứa Batch ID, Job ID, State. Batch ID dung để check status của batch

Page 14: BULK API - WordPress.com · 2019. 10. 16. · • Bulk API xử lý data bằngcách tạoJob, Job chứamộthoặcnhiều batches • Mộtbatch là mộttậprecords đượcgửitớiServer

Copyright 2019. Neos Corporation All Rights Reserved14

Hoạt động của Bulk API – Detail (4)Step 4: Close the Job

• Khi kết thúc gửi data trong các batches tới server thì thực hiện close job. Tạo file text close_job.txt với nội dung sau

• Thực hiện câu lệnh sau để close jobcurl https://instance.salesforce.com/services/async/47.0/job/jobId -H "X-SFDC-Session:sessionId" -H "Content-Type: application/xml; charset=UTF-8" -d @close_job.txt

• Câu lệnh trên sẽ update trạng thái của Job từ Open sang Close

Page 15: BULK API - WordPress.com · 2019. 10. 16. · • Bulk API xử lý data bằngcách tạoJob, Job chứamộthoặcnhiều batches • Mộtbatch là mộttậprecords đượcgửitớiServer

Copyright 2019. Neos Corporation All Rights Reserved15

Hoạt động của Bulk API – Detail (5)Step 5: Check Batch Status

• Để check trạng thái của từng batch thì thực hiện câu lệnhcurl https://instance.salesforce.com/services/async/47.0/job/jobId/batch/batchId -H "X-SFDC-Session: sessionId" Kết quả trả về dạng xml sẽ chứa trạng thái batch Failed hoặc Completed

• Câu lệnh sau sẽ check trạng thái của toàn bộ batches trong jobcurl https://instance.salesforce.com/services/async/47.0/job/jobId/batch -H "X-SFDC-Session: sessionId"

Page 16: BULK API - WordPress.com · 2019. 10. 16. · • Bulk API xử lý data bằngcách tạoJob, Job chứamộthoặcnhiều batches • Mộtbatch là mộttậprecords đượcgửitớiServer

Copyright 2019. Neos Corporation All Rights Reserved16

Hoạt động của Bulk API – Detail (6)Step 6: Retrieve Batch Results

• Khi các batches hoàn thành thì có thể kiểm tra trạng thái của từngrecords bằng câu lện

curl https://instance.salesforce.com/services/async/46.0/job/jobId/batch/batchId/result -H "X-SFDC-Session: sessionId"

• Kết quả trả về như sau

Page 17: BULK API - WordPress.com · 2019. 10. 16. · • Bulk API xử lý data bằngcách tạoJob, Job chứamộthoặcnhiều batches • Mộtbatch là mộttậprecords đượcgửitớiServer

Copyright 2019. Neos Corporation All Rights Reserved17

LINK REFER

1. Bulk API Developer Guide: https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/asynch_api_intro.htm

2. Bulk API Limits: https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/asynch_api_concepts_limits.htm

3. PHP with bulk api (forceworkbench): https://code.google.com/archive/p/forceworkbench/downloads

4. PHP with bulk api (forceworkbench - git): https://github.com/forceworkbench/forceworkbench/tags

Page 18: BULK API - WordPress.com · 2019. 10. 16. · • Bulk API xử lý data bằngcách tạoJob, Job chứamộthoặcnhiều batches • Mộtbatch là mộttậprecords đượcgửitớiServer

Copyright 2019. Neos Corporation All Rights Reserved18

QUESTION & ANSWER