Исходя из многолетнего использования реляционных баз данных, я пытаюсь разработать довольно простое приложение для чата/обмена сообщениями с использованием FireBase.
FireBase использует структуру данных NoSQL с использованием строк в формате JSON.
Я провел много исследований, чтобы понять, как структурировать базу данных с учетом производительности. Я попытался «денормализировать» структуру и получил следующее:
{
"chats" : {
"1" : {
"10" : {
"conversationId" : "x123332"
},
"17": {
"conversationId" : "x124442"
}
}
},
"conversations" : {
"x123332" : {
"message1" : {
"time" : 12344556,
"text" : "hello, how are you?",
"userId" : 10
},
"message2" : {
"time" : 12344560,
"text" : "Good",
"userId" : 1
}
}
}
}
Цифры 1, 10, 17 являются примерами идентификаторов пользователей.
Мой вопрос в том, можно ли это структурировать лучше? Цель состоит в том, чтобы масштабироваться по мере роста пользователей приложения и при этом получать максимально возможную производительность.