Arbol JSON
Que mejor que verlo con un ejemplo nada más empezar
Ejemplo de como almacena Firebase los datos en formato JSON
{
"usuarios": {
"maria26_nick": {
"nombre": "Maria Rodriguez",
"contactos": { "roberto99_nick": true },
},
"roberto99_nick": { ... },
"david693": { ... }
}
}
Los datos en la base de datos de Firebase se almacenan como un árbol con ramas y dentro de estas ramas otras. En cada rama puede haber más o acabar ahí dándole valor a un elemento.
El ejemplo anterior podría servir para guardar una lista de usuarios, cuyo nodo de acceso sería el nombre de usuario y dentro tendríamos el nombre completo y los contactos relacionados.
Por supuesto esto es una estructura muy sencilla, pongamos como ejemplo algo más complejo. Desde Google se recomienda seguir unas recomendaciones a la hora de diseñar la estructura de estos arboles, para evitar que la obtención de determinados nodos o elementos se demore debido a una poco optimizada estructura JSON,
{
// Cada elemento chat contiene únicamente información sobre él
// no contiene los mensajes ni información sobre usuarios
"chats": {
"one": {
"title": "Grupo de Firebase España",
"lastMessage": "roberto99: Como configurar Analytics en Firebase.",
"timestamp": 1459361875666
},
"two": { ... },
"three": { ... }
},
// Las personas que están en cada chat se pueden almacenar en este elemento
// "members", comparte el ID de la conversación con el elemento chat
"members": {
// we'll talk about indices like this below
"one": {
"roberto99": true,
"maria96": true,
"alex88": true
},
"two": { ... },
"three": { ... }
},
// Al separar mensajes de otros datos, podemos recorrer la lista de mensajes mucho
// más rápido que si tuviéramos que guardar toda la información de
// mensajes, miembros y conversaciones en un mismo elemento "chat"
// Tenemos un ID de chat, de mensaje que se comparte con "members" y "chats"
"messages": {
"one": {
"m1": {
"name": "alex88",
"message": "Usar Firebase para almacenar datos de apps",
"timestamp": 1459361875337
},
"m2": { ... },
"m3": { ... }
},
"two": { ... },
"three": { ... }
}
}
