BULK API - WordPress.com · 2019. 10. 16. · • Bulk API xử lý data bằngcách tạoJob, Job...
Transcript of BULK API - WordPress.com · 2019. 10. 16. · • Bulk API xử lý data bằngcách tạoJob, Job...
Copyright 2019. Neos Corporation All Rights Reserved
BULK API
Edited by [email protected] – 10 - 11
1
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
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
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
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 đó
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
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
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
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
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
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
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
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
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
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"
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
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
Copyright 2019. Neos Corporation All Rights Reserved18
QUESTION & ANSWER