Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

HyperBatch

2.381 visualizaciones

Publicado el

Presented at French Touch Dreamin' 2016

Publicado en: Tecnología

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

×