gpt4 book ai didi

firebase - 本地写入 Firebase RTDB 或带有附加监听器的 Firestore 是否需要读取操作?

转载 作者:行者123 更新时间:2023-12-04 11:41:42 25 4
gpt4 key购买 nike

在这个firestore官方guide ,它说

Local writes in your app will invoke snapshot listeners immediately. This is because of an important feature called "latency compensation." When you perform a write, your listeners will be notified with the new data before the data is sent to the backend


  • 所以 Firestore 客户端(发布此数据)不会通过监听器从服务器获取此数据?
  • 这是否仍会作为读取操作收费(如果未从服务器获取数据)?
  • 这个概念也适用于实时数据库吗?

  • 我用一个客户端将新对象写入 /chats/chatRoomId/ 进行了测试。和相同的客户有 child_added 的听众在 /chats/chatRoomId/ .我关闭了互联网,仍然报告推送新数据正常(我猜是由于离线能力),并且听众也报告收到新数据(即使没有服务器访问权限)

    我想构建我的聊天应用程序的数据库,这样我就可以减少聊天数据库结构中不必要的读取(如果有的话)的成本 herehere 由@FrankVanPuffelen 推荐 来自 Firebase。

    chats: {
    $roomId: {
    $messageId: {
    senderId: "..."
    message: "..."
    }
    }
    }


    示例 :

    考虑一个 1:1 聊天,其中用户 A 和用户 B(在不同客户端上)在聊天室中,并且都向 /chats/chatRoomId/ 添加了一个监听器。 .现在,如果用户 A 在 chatRoomId 中推送一条新消息,两个用户 A&B 都将通过他们的听众收到这条新消息。这不是浪费用户 A 的带宽和/或读取操作成本,因为他自己推送它,并且可能不需要从服务器获取它。

    如果本地写入不会花费我为附加的监听器读取服务器,我会将来自用户 A 和用户 B 的消息存储在同一路径 /chats/chatRoomId/recommended

    否则,我想要一个数据库结构,以便用户 A 将只收听来自用户 B 的消息。例如
    用户 A 会将用户 B 的新消息推送到 /chats/uid_A/uid_B/并且用户 A 将收听 /chats/uid_B/uid_A/其中用户 B 正在为用户 A 推送新消息。并且客户端会在本地合并按时间排序的两条路径,得到一个聊天流。

    它可能会为我节省 50% 的读取次数,并节省大量的 Firebase 账单。

    2019 年 3 月 5 日编辑:

    添加图片以提高问题的清晰度:
    Pay for an unnecessary Read

    最佳答案

    1. So Firestore client (that posted this data) will not fetch this data via listeners from server?

    当您在本地写入一些数据时,将立即调用快照监听器。这意味着您的听众将立即收到通知,因为您添加了一些新数据。但请记住,此操作发生在数据发送到 Firebase 服务器之前。
    1. Will this still be charged as a Read Op (in case data is not fetched from the server)?

    不会。只要您缓存了数据并且没有将数据与 Firebase 服务器同步,您就不会在 Firestore 中被收取任何“读取操作”费用。
    1. Is this concept true for the Realtime Database as well?

    不,这不对。 Firebase 实时数据库对 pricing 有不同的概念。 .

    I want to structure my chat app's DB, such that I can cut cost on unnecessary reads (if there are any) in the chat DB structure given here and here recommended by @FrankVanPuffelen from Firebase.


    这两个示例都针对 Firebase 实时数据库,并且都解释了创建聊天应用程序的一种非常好的方法。如果您考虑在某个时候尝试将 Cloud Firestore 用于聊天应用程序,您可以在此处找到有关如何创建完整且功能齐全的教程 Firestore Chat App .
    我还认为您可能对以下文章感兴趣:
  • https://medium.com/firebase-tips-tricks/how-to-drastically-reduce-the-number-of-reads-when-no-documents-are-changed-in-firestore-8760e2f25e9e
  • 关于firebase - 本地写入 Firebase RTDB 或带有附加监听器的 Firestore 是否需要读取操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55919435/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com