学习目标
完成本单元后,您将能够:
- 描述Salesforce中精益数据加载的好处。
- 加载大量数据时,了解批量API优于SOAP API的优点。
- 通过暂停数据验证和浓缩操作加快加载大型数据集的过程。
加载精益
无论我们正在谈论LDV迁移还是正在进行的大数据同步操作,将这些操作对业务关键型操作的影响降至最低是最佳做法。实现这一目标的一个明智的策略是加载精简 – 仅包括满足业务关键操作所需的数据和配置。
加载精益需要什么?
- 在将用户移至Salesforce之前识别业务关键型操作。
- 确定实现这些操作所需的最小数据集和配置。
- 根据您确定的要求定义数据和配置策略。
- 尽可能快地加载数据以减少同步的范围。
在决定数据加载和配置策略时,请考虑这些设置选项,这些选项使您能够推迟非关键进程并加快LDV加载速度。
全组织共享默认值. 当您使用私人共享模式加载数据时,系统会在记录添加时计算共享。如果使用公共读/写共享模式加载,则可以将该处理推迟到切换之后。
复杂的对象关系. 您在对象上定义的查找次数越多,数据加载期间系统执行的检查就越多。但是,如果你能够在后期阶段建立这些关系,那么加载速度会更快。
共享规则. 如果在加载数据之前配置了基于所有权的共享规则,则如果记录的所有者属于定义要共享的数据的角色或组,则您插入的每条记录都需要共享计算。如果您在加载数据之前配置了基于条件的共享规则,则每个记录的字段与规则选择条件相匹配也需要共享计算。
工作流规则,验证规则和触发器. 这些功能强大的工具可以确保在日常操作中输入的数据是干净的,并在记录之间包含适当的关系但是,如果在海量数据加载期间启用它们,它们也可能会减慢处理速度。
但不是太瘦
他们说你不能太富有或太瘦。但是当涉及到数据加载时,你肯定可能太瘦了。虽然消除更快数据加载的障碍是明智之举,但要记住,在数据加载过程中,少量配置是必不可少的(或者至少是高度期望的),而且不应该混淆:
- 与主 – 子细节的父记录. 如果父母不存在,您将无法加载子记录。
- 记录所有者. 在大多数情况下,您的记录将由个人用户拥有,业主需要存在于系统中才能加载数据。
- 角色层次结构. 如果记录的所有者不是角色层次结构的成员,则可能认为加载速度会更快。但几乎在所有情况下,性能都是一样的,如果您加载门户帐户,速度会更快。所以推迟这个配置方面没有任何好处。
批量API与SOAP API数据加载
当您加载LDV时,您选择的API会有所不同。标准Force.com SOAP API针对一次更新一些记录的实时客户端应用程序进行了优化。 SOAP API要求开发人员和管理员实现复杂的流程,以小尺寸的块来上传数据,监视结果并重试失败的记录。这种方法对于小数据负载是可以接受的,但是对于大数据集却变得笨重和耗时。
另一方面,批量API旨在简化从数千到数百万条记录的数据处理过程。批量API基于REST原则,专门为简化和优化加载或删除大型数据集的过程而开发。
使用批量API进行LDV可以实现超快的处理速度,同时减少客户端编程语言,易于监控的作业状态,失败记录的自动重试,并行处理支持,Force.com的最小往返次数,最小化API调用,有限的丢弃连接,以及易于调整的批量大小。简而言之,这是插入,查询和删除记录的最快方法。
批量API的工作原理
当您使用批量API上传记录时,这些记录将流式传输到Force.com以创建新作业。随着数据卷入作业,它被存储在临时存储器中,然后被分割成用户定义的批次(最多10,000条记录)。即使您的数据仍然被发送到服务器,Force.com平台也会提交批处理进行处理。
批次可以根据您的需要并行或串行处理。批量API将功能从您的客户端应用程序移动到服务器。 API记录每个作业的状态,并尝试自动为您重新处理失败的记录。如果作业超时,批量API会自动将其重新放入队列中,并为您重新尝试。
每个批次都是独立处理的,一旦批次完成(成功与否),作业将更新结果。具有适当访问权限的任何人都可以通过Salesforce.com管理界面对作业进行监控和管理。
通过暂停事件来提高速度
当您需要快速加载LDV时,务必确保每个插入程序尽可能高效。通过正确的准备和后期处理,您可以在加载时禁用数据验证和增强操作,而不会影响您的数据完整性或业务规则。
Force.com平台包含强大的工具,可确保用户输入的数据清晰,并在记录之间包含适当的关系。验证规则确保数据用户输入的新记录和现有记录符合您业务指定的标准。通过工作流程规则,您可以自动执行现场更新,电子邮件警报,出站邮件以及与工作流程,审批和里程碑关联的任务。触发器允许您在记录插入操作数据和执行其他操作。
虽然这些工具允许您在正常操作期间保持数据完整性,但是如果在海量数据加载期间启用这些工具,还可能导致插入操作变慢。但是,如果关闭验证,工作流程和触发器,那么如何确保一旦完成加载,就可以获得准确的数据,并在对象之间建立正确的关系?这个工作有三个关键阶段 – 分析和准备数据,禁止加载事件和后期处理。
分析和准备数据
要在没有触发器,验证规则和工作流规则运行的情况下安全地加载,请检查您通常可以通过这些操作满足的业务需求,然后回答几个问题。
首先,您可以在数据加载之前通过数据清理来满足您的哪些要求,或者在对象之间存在关键依赖关系的情况下对负载操作进行排序?例如,如果通常使用验证规则来确保用户条目在有效范围内,则可以在加载之前查询数据集以查找和修复不符合规则的记录。
其次,您可以在数据加载之后通过后处理记录满足哪些要求?这里一个典型的用例集涉及到数据丰富 – 可能涉及添加对象之间的查找关系,将汇总字段汇总到父记录以及记录之间的其他数据关系。
禁用加载事件
一旦分析了所有数据验证和充实要求,并计划在数据加载之前或之后对其进行管理的操作,可以临时禁用规则和触发器以加快加载速度。只需编辑每个规则并将其设置为“无效”状态即可。您可以以相同的方式禁用验证,潜在客户和案例分配规则以及区域分配规则。
暂时禁用触发器有点复杂,需要做一些准备。首先,创建一个自定义设置和相应的复选框字段来控制何时触发一个触发器。然后在您的触发器代码中包含一个语句,就像本例中突出显示的那样。
一旦完成,禁用或启用触发器就像编辑复选框字段一样简单。
后期处理
当您完成加载数据时,是时候完成您推迟的数据丰富和配置任务,直到这一点:
- 添加对象之间的查找关系,将汇总字段汇总到父记录以及使用批量Apex或批量API记录之间的其他数据关系。
- 使用外键或其他数据增强Salesforce中的记录,以利用批量Apex或批量API与其他系统集成。
- 重置您为触发器创建的自定义设置上的字段,以便在记录创建和更新时适当触发。
- 重新打开验证,工作流程和分配规则,以便在用户输入和编辑记录时触发相应的操作。
所以你有它:通过加载精益,使用批量API和暂停事件,您可以确保您的数据加载是有效的,尽可能快,并保持其完整性。现在,我们已经加载了数据,移动到下一个单元,我们覆盖删除和提取。