我不确定这是否是问这个问题的地方,但是我有一个最佳做法问题。
我有一个由Salesforce数据提供的仪表板服务,该服务显示了本周执行的任务X的数量(X是关闭的机会-赢得了,创造了潜在客户等)。
当前,数据被定期拉出并存储在SQL数据库中,该数据库映射到REST API,客户端应用程序调用该REST API以获取两个日期值之间的汇总,并将通过SF的Insert通过Webhook调用进行补充触发器。
我想知道将Firestore集合作为聚合SQL的缓存是一个好主意,还是有更好的方法。我看到的好处是减少了SQL Server上的流量,可以进行即时更新(如果“缓存”(Firestore)已更新,则客户端的值也会立即更新)。
当从SF中提取数据或通过插入触发器/ Webhook接收到新记录时,我可以更新Firestore记录,客户端将立即收到更改。
我对Firestore文档的想法是
{
user: "123",
sfOwnerId: "124",
sfTaskType: "Opportunities Closed Won This Week",
count: 23
}
这是个好主意吗?有更好的吗?
谢谢你!
答案 0 :(得分:1)
Firestore documentation suggests的存储策略是存储聚合数据,因此,我认为这是一个非常好的主意。
另一种策略是将Salesforce数据仅在传入时存储在Firestore中,而不进行聚合,然后让客户端执行聚合。这可以通过subscribing to real-time updates to a query of Collection来实现。在此设置中,您将在onSnapshot
回调中执行计算(假设您使用的是Web环境)。
这里的优点是可以提高性能,因为云功能通常会遭受“冷启动”延迟。
注意:本文档中的一些建议围绕 所谓的冷启动。函数是无状态的,并且 执行环境通常是从头开始初始化的,即 叫做冷启动。冷启动可能会花费大量时间 去完成。最佳做法是避免不必要的冷启动,并且 尽可能简化冷启动过程 例如,避免不必要的依赖性。