firebase实时数据库如何读取数据?

mr.*_*oot 5 android firebase-realtime-database

我正在开发一个聊天应用程序,其中消息存储在 firebase 实时数据库中。现在,如果我创建一个如下所示的节点 chats-Between-A-and-B-Id 是自动生成的聊天室键,所以我想知道当用户 S在聊天应用程序中打开与用户 T的聊天时,数据库将只读取消息存储在chats-Between-S-and-T-Id 中,不会阅读其他聊天室消息!?我对吗 ?如果是,那么它会降低定价吗?

chats-
      chats-Between-A-and-B-Id-
                 messageID1-…
                 messageID2-…
                 messageID3-…
                 ...
      chats-Between-o-and-p-Id-…
      chats-Between-s-and-t-Id-…
      chats-Between-x-and-y-Id-…
Run Code Online (Sandbox Code Playgroud)

或者

如果我存储如下所示的数据,那么如果用户 S在聊天应用程序中打开用户 T的聊天,那么数据库将读取整个消息并

cahts-
      messageID1-…
      messageID2-…
      messageID3-…
      ...
Run Code Online (Sandbox Code Playgroud)

像(如下所示)对它们进行排序,以便它会读取所有消息并对其进行排序并在应用程序中显示给用户!?这会增加定价吗?

if(chat.getReceiver() == senderID && chat.getSender() == receiverId ||
   chat.getReceiver() == receiverId && chat.getSender() == senderID)
                          {
                             (mChatList as ArrayList<Chat>).add(chat) //show chats
                          }
Run Code Online (Sandbox Code Playgroud)

我想知道哪种方法可以节省我的钱。

编辑

我正在使用第二种方法(我从聊天应用程序教程中得到它)。我们根据发送者和接收者对消息进行排序,但在阅读@sharath 的答案后,我明白如果我这样做,它将读取来自聊天节点的每条消息,然后根据发送者-接收者对它们进行排序,如果有 100 万条消息来自所有用户然后它将读取 100 万条消息,并且只为 2 个用户对其中的一些消息进行排序!它会让我变穷。所以我正在考虑使用第一种方法,我将从 chat>>roomIdBetween2Users 获取消息,这样它就不会读取其他人的聊天内容,并为我提供安全、可维护且价格合理的数据库。

这是我的数据库的图像,聊天是父节点包含所有用户的所有消息,并按照我在 2 个用户的代码中提到的对它们进行排序。聊天中已经有大约 500 多条消息。而且以后会很危险。在此处输入图片说明