Код ниже взят из Документы Firebase о структурировании данных .У меня есть похожая настройка для некоторых из моих данных, но у меня есть дополнительное требование, которое этот конкретный пример, похоже, не охватывает.
Допустим, вы хотите получить имя каждого пользователя, принадлежащего «технионистам»'group.
Правильно ли я сказал, что единственный способ сделать это - получить список членов из groups/techpioneers/members
, а затем просмотреть их, извлекая users/$userId
?
Если у вас есть миллионы пользователей, не становится ли это ужасно неэффективным?Конечно, вы можете ограничить результаты, но если вам нужно выбрать 100 членов, входящих в группу techpioneers, это 100 отдельных запросов.
Является ли такой тип структурирования лучшим способом для масштабирования данных на этой основе?
// An index to track Ada's memberships
{
"users": {
"alovelace": {
"name": "Ada Lovelace",
// Index Ada's groups in her profile
"groups": {
// the value here doesn't matter, just that the key exists
"techpioneers": true,
"womentechmakers": true
}
},
...
},
"groups": {
"techpioneers": {
"name": "Historical Tech Pioneers",
"members": {
"alovelace": true,
"ghopper": true,
"eclarke": true
}
},
...
}
}
Я думаю, что было бы лучше иметь другой структурированный ключ, подобный следующему:
{
"groupUsers":
"techpioneers": {
"alovelace": {
"name": "Ada Lovelace"
}
}
}
Выполнение этого означало бы, что вам нужно всего лишь выполнить один запрос к groupUsers/techpioneers
, чтобы получитьвсе члены, а также их имена.
Я стремлюсь к тому, чтобы структура оставалась как можно более плоской, следуя советам, приведенным в документации.
Думал ли я по правильным линиям?или я неправильно понял?Любой совет будет принят с благодарностью.