Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

HyperBatch

2,357 views

Published on

Presented at French Touch Dreamin' 2016

Published in: Technology

HyperBatch

  1. 1. HyperBatch ​Daniel PETER ​Lead Applications Engineer, Kenandy ​Salesforce MVP ​Bay Area Salesforce Developer User Group Organizer ​20x certified ​dan@danpeter.com ​@danieljpeter A Hyper-Fast Batchable Interface for Salesforce
  2. 2. Apex Database.Batchable
  3. 3. ​Case study: Account / Contact Batches • Prerequisite: 121K Accounts already in the system • CreateContactsBatch: Creates 3 Contacts for each Account with a random “probability” field for each. 363k Contacts total. • UpdateAccountsBatch: For each Account, update the highest and lowest probability on the Account by querying the child Contacts. Get the overall highest and lowest probability across all the Accounts. • DeleteContactsBatch: Delete all of the Contacts in the system. Keep a running total of how many get deleted. Speed! Why HyperBatch?
  4. 4. ​CreateContactsBatch ​Using traditional Apex Database.Batchable: 45 mins Speed! Why HyperBatch?
  5. 5. ​UpdateContactsBatch ​Using traditional Apex Database.Batchable: 10 mins Speed! Why HyperBatch?
  6. 6. ​DeleteContactsBatch ​Using traditional Apex Database.Batchable: 33 mins total (got row lock errors, had to run twice) Speed! Why HyperBatch?
  7. 7. ​CreateContactsHyperBatch ​Using HyperBatch: 2 mins 12 seconds Speed! Why HyperBatch?
  8. 8. ​UpdateContactsHyperBatch ​Using HyperBatch: 38 seconds Speed! Why HyperBatch?
  9. 9. ​DeleteContactsHyperBatch ​Using HyperBatch: 1 min, 11 seconds Speed! Why HyperBatch?
  10. 10. Speed! Why HyperBatch? Operation Database.Batchable HyperBatch Difference Percentage CreateContacts 45 2.2 42.8 4.9% UpdateContacts 10 0.6 9.4 6.3% DeleteContacts 33 1.2 28 3.6% Total 88 4 84 4.6%
  11. 11. ​Summary ​Running all 3 example batch jobs takes only 4 mins instead of 88 mins. ​You save 84 mins. ​It only takes 4.6% of the time! Speed! Why HyperBatch?
  12. 12. User Experience Why HyperBatch? ​Traditional Apex batch ​HyperBatch
  13. 13. Concurrency Why HyperBatch? ​Max concurrent jobs processing ​Apex Batch: 5 per org ​HyperBatch: ? 20 / user?
  14. 14. Concurrency Why HyperBatch? ​Row lock behavior ​Apex Batch: default is a failed batch execution. Retry logic can be built, but it will likely exceed the transaction limits. ​HyperBatch: row locks retry automatically until the transaction succeed. Each re-attempt gets a new context!
  15. 15. Summary How it works • HyperBatch interface that mimics the Database.Batchable interface. • Browser orchestration for selecting jobs and running them on-demand. • Lightning Design System, Visualforce (Lightning Components would be a data bottleneck). • AJAX toolkit for PK chunking the query locator. • Parallel remote actions fire the qeueables for the batch executions methods. (Not serial!) • Wrapping requests in unique identifiers for closed loop execution – JavaScript function binding. • JavaScript polls for the status of the qeueables, waiting for them to complete. • Each execute can return some state of type Object, it can be anything. These are stored in a custom object, and a list of them is returned to the finish() method, then they are deleted.
  16. 16. Interface How it works
  17. 17. HyperBatch Architecture
  18. 18. Roadmap • Enhance the user interface • Test methods • Support custom iterators instead of just query locator • Support simple data operations like update a field or delete records without having to write Apex • Chunk in 2 dimensions: (Parent Id, then Record Id) to avoid row lock errors
  19. 19. • Salesforce Developer Blogs: “Data Chunking Techniques for Massive Orgs“ by Daniel Peter (https://developer.salesforce.com/blogs/developer-relations/2015/11/pk-chunking-techniques- massive-orgs.html) • Presentation from Forcelandia 2016: “PK Chunking – Divide and conquer massive objects in Salesforce” (http://www.slideshare.net/danieljpeter/forcelandia-2016-pk-chunking) • GitHub repo: HyperBatch (https://github.com/danieljpeter/HyperBatch) Resources
  20. 20. Q & A ​Daniel PETER ​Lead Applications Engineer, Kenandy ​Salesforce MVP ​Bay Area Salesforce Developer User Group Organizer ​20x certified ​dan@danpeter.com ​@danieljpeter
  21. 21. Merci ​Daniel PETER ​Lead Applications Engineer, Kenandy ​Salesforce MVP ​Bay Area Salesforce Developer User Group Organizer ​20x certified ​dan@danpeter.com ​@danieljpeter

×