1) Можно ли как-нибудь создать отношения между разными коллекциями?
Да, есть.Вы можете создавать отношения между различными коллекциями, удерживая ссылки, как указано в официальной документации, относительно поддерживаемых типов данных .Например:
projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH].
Существует также другой обходной путь, который включает duplicating data
, и для этого я рекомендую посмотреть это видео, Денормализация нормальная с базой данных Firebase .Предназначено для базы данных реального времени Firebase, но те же принципы применимы к Cloud Firestore.
2) Должен ли я сохранять все 3 типа пользователей в одной коллекции «пользователь» или создавать разные коллекции для каждого типа в корне,Каковы будут последствия использования обоих подходов.
Для простоты вы можете использовать одну коллекцию и добавить тип пользователя в качестве свойства, подобного этому:
Firestore-root
|
--- users
|
--- uid
| |
| --- userType: "admin"
| |
| --- //other user details
|
--- uid
| |
| --- userType: "driver"
| |
| --- //other user details
|
--- uid
|
--- userType: "rider"
|
--- //other user details
Чтобы запросить всех пользователей определенного типа пользователя, вы можете использовать следующий запрос:
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
Query query = rootRef.collection("users").whereEqualTo("userType", admin);
3) Сколько глубокой вложенности мне разрешено делать в одной коллекции, т.е.-коллекции в коллекциях?
Глубина может составлять до максимум 100 подколлекций.Согласно официальной документации по использованию и ограничениям :
Максимальная глубина вложений: 100
Вы можете спросить, это проблема?
Насколько я знаю, Firestore может так же быстро найти узел на уровне 1, как и на уровне 100. Поэтому для такой базы данных, как ваша, глубина не должна быть фактором, влияющим на скорость на техническом уровне.
4) Правильно ли мое решение использовать 2 разные базы данных в одних и тех же приложениях?
Да, это так.На самом деле, это довольно распространенная практика.В соответствии с обоими ценовыми планами вы можете выбрать, какой из них больше соответствует вашим потребностям.
5) Является ли Firebase правильным выбором для приложения, которое я создаю?
Вопросы с просьбой рекомендовать или найти книгу, инструмент, библиотеку программного обеспечения не относятся к теме переполнения стека, поскольку они, как правило, привлекают взвешенные ответы и спам, но, на мой взгляд, да.