Firebase documentation article Structure Your Database section Best practices for data structure says "Avoid nesting data".
What are the benefits for performance and maintenance to have several DBs vs a flat structure, or they will work same in average?
In SQL we create tables and then set relationships between them. In a NoSQL I can create several DBs and imitate that.
For example in a flat structure:
{
"chatsId": [
"some-chat-id-1",
"some-chat-id-2",
...
],
"chatsInfo": {
"some-chat-id-1": {
"between": [
"some-user-id-1",
"some-user-id-2"
],
messages: "some-messages-id-1"
},
"some-chat-id-2": {
"between": [
"some-user-id-3",
"some-user-id-4"
],
messages: "some-messages-id-2"
},
...
},
"messages": {
"some-messages-id-1": [
{
... some message data 1
},
{
... some message data 2
},
...
],
"some-messages-id-2": [
{
... some message data 1
},
{
... some message data 2
},
...
]
},
}
But with multiple databases:
ChatsDB
{
"chatsId": [
"some-chat-id-1",
"some-chat-id-2",
...
]
}
ChatsInfoDB
{
"chatsInfo": {
"some-chat-id-1": {
"between": [
"some-user-id-1",
"some-user-id-2"
],
messages: "some-messages-id-1"
},
"some-chat-id-2": {
"between": [
"some-user-id-3",
"some-user-id-4"
],
messages: "some-messages-id-2"
},
...
}
}
MessagesDB
{
"messages": {
"some-messages-id-1": [
{
... some message data 1
},
{
... some message data 2
},
...
],
"some-messages-id-2": [
{
... some message data 1
},
{
... some message data 2
},
...
]
}
}