【问题标题】:Using Firebase Realtime Database node keys as document ID's in Cloud Firestore在 Cloud Firestore 中使用 Firebase 实时数据库节点键作为文档 ID
【发布时间】:2021-08-29 03:39:53
【问题描述】:

我正在将我的实时数据库迁移到 Cloud Firestore。理想情况下,我需要保留使用 push() 生成的相同实时数据库节点密钥,并将其用作 Firestore 中的文档 ID,但这样做安全吗?

我已阅读https://firebase.google.com/docs/firestore/best-practices 的信息,但我仍然不确定这是否安全。我知道 Cloud Firestore 中自动生成的文档 ID 与实时数据库中自动生成的格式不同。

如果使用实时数据库生成的密钥(例如:-M_NHw525_IxMqiGPUvd)作为 Cloud Firestore 中的文档 ID,我是否可能会遇到问题?

非常感谢任何帮助,谢谢。

【问题讨论】:

    标签: firebase firebase-realtime-database google-cloud-firestore


    【解决方案1】:

    Firestore 对其写入过程中的热点很敏感,这意味着当写入在地址空间中随机分布时,写入吞吐量最佳。换句话说:如果正在写入的文档的 ID 以及正在写入索引的值是随机分布的。

    Firebase 实时数据库推送 ID 以编码时间戳开头,因此它们绝对不是随机分布的。它们(按设计)在很大程度上是连续的:对push() 的后续调用通常会导致键彼此相邻。这正是它们在实时数据库中的设计目的,但它不满足在 Firestore 中最大化写入吞吐量所需的随机分布要求。

    在使用现有的按键进行 Firestore 写入时是否会遇到问题实际上取决于实现。例如,在数据迁移期间,当写入不是随机分布时,您需要准备好限制写入(更快)。希望以上内容可以帮助您了解在执行数据迁移时要注意什么。

    【讨论】:

    • 谢谢弗兰克。我只是对你提到限制写入的部分有点困惑。你的意思是我不应该一次传输所有数据吗?我有大约 1000 个用户数据要传输,但今后我将使用 Firestore 的自动生成 ID。
    • 在迁移期间,您可能需要注意这些限制:firebase.google.com/docs/firestore/…。迁移后,您不太可能遇到这些问题。
    • 嘿@HarryCarter1995 这里还需要什么吗?
    • 嗨弗兰克,再问一个问题,您认为将实时数据库密钥存储在 firestore 的文档字段中而不是将其存储为文档 ID 会更好吗?通过这样做,我应该仍然能够查询包含实时数据库密钥的字段,同时能够使用 firestores 随机 ID 作为文档 ID?
    猜你喜欢
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 2019-07-05
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    相关资源
    最近更新 更多