是否可以在Firestore数据库中将时间戳记添加为文档字段?

时间:2019-08-02 10:08:19

标签: android firebase google-cloud-firestore

在与Cloud Firestore一起工作时,我在Add data to Cloud Firestore文档上阅读了以下声明:

  

重要:与Firebase实时数据库中的“推送ID”不同,Cloud Firestore自动生成的ID不提供任何自动排序。如果希望能够按创建日期排序文档,则应将时间戳记存储为文档中的字段。

因此,我设计了数据库,因为它在所有文档中都包含timestamp字段。

但是之后,我在Best Practices文档上阅读了以下声明:

  

请注意,索引具有单调递增值的字段,   例如时间戳记,可能会导致热点,从而影响   具有高读写率的应用程序。

  

避免以高词典顺序关闭文档的高读写速率,否则您的应用程序将遇到争用错误。这个问题是   称为热点,您的应用程序可能会遇到热点   是否执行以下任一操作:

     
      
  • 以极高的速率创建具有单调递增字段(例如时间戳)的新文档。
  •   

所以我现在很困惑。我正在开发一个Android应用程序。我可以使用timestamp作为字段吗?如果我的应用程序有很多用户,是否会造成任何问题?是的,我必须在创建日期之前订购文档。

1 个答案:

答案 0 :(得分:2)

那两个文档之间有很大的区别。

第一个是指Cloud Firestore自动生成的ID不像Firebase实时数据库推送ID那样具有时间分量这一事实。这就是它不能提供任何自动订购的原因。因此,与将时间戳记作为对象的属性无关。

第二个是指不建议使用单调递增的值(例如时间戳)作为文档ID的事实。因此请记住,只有在数据库中使用作为键这样的时间戳时才是这种情况,只有在这种情况下才可能导致影响延迟的热点。

由于您将时间戳记用作每个文档中的字段,因此无需担心。如果您将该时间戳记用作Coud Firestore中的文档ID或Firebase实时数据库中的节点密钥,则适用上述规则。