将Firestore用作SQL聚合的缓存

时间:2018-11-15 23:33:00

标签: firebase salesforce google-cloud-firestore

我不确定这是否是问这个问题的地方,但是我有一个最佳做法问题。

我有一个由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
} 

这是个好主意吗?有更好的吗?

谢谢你!

1 个答案:

答案 0 :(得分:1)

Firestore documentation suggests的存储策略是存储聚合数据,因此,我认为这是一个非常好的主意。

另一种策略是将Salesforce数据仅在传入时存储在Firestore中,而不进行聚合,然后让客户端执行聚合。这可以通过subscribing to real-time updates to a query of Collection来实现。在此设置中,您将在onSnapshot回调中执行计算(假设您使用的是Web环境)。

这里的优点是可以提高性能,因为云功能通常会遭受“冷启动”延迟。

  

注意:本文档中的一些建议围绕   所谓的冷启动。函数是无状态的,并且   执行环境通常是从头开始初始化的,即   叫做冷启动。冷启动可能会花费大量时间   去完成。最佳做法是避免不必要的冷启动,并且   尽可能简化冷启动过程   例如,避免不必要的依赖性。

Source