Cloud Firestore пользовательских личных документов в общей коллекции - PullRequest
0 голосов
/ 22 октября 2018

Проблема

Я довольно плохо знаком с дизайном баз данных NoSQL и хочу использовать Google Cloud Firestore для нового приложения, которое я создаю.Выглядит просто и аккуратно.

В моей модели данных у меня есть users и pages.Пользователь может иметь много страниц.Пользователи могут связать свои учетные записи с другими пользователями (думать, как семейный план).Связанные пользователи будут иметь одного лидера, а все остальные пользователи будут подписчиками.Благодаря такому дизайну все подписчики получают доступ к страницам лидера.Подписчики могут создавать, читать, обновлять и удалять страницы от имени лидера.Как чистый эффект, все связанные пользователи разделяют страницы.Я думаю, что структура будет выглядеть следующим образом.

/database/
    users/
        [user-doc]
    pages/
        [page-doc]

Ограничения, которые помогут решить проблему

  • Я предполагаю начать примерно с 10 до 50 тысяч пользователей, возможно, преодолев 100 тысяч позже.
  • Я предполагаю, что каждый пользователь имеет в среднем около 30-40 страниц.
  • Я ограничу количество связанных пользователей максимум 5 пользователями.То есть один лидер и четыре последователя.

Вещи, которые меня интересуют ...

Я хотел бы подтвердить одну вещь: этот дизайн хорош, особенно в контекстеCloud Firestore.

  1. Для правил безопасности, когда пользователь хочет выполнить R / U / D и page документ, его права проверяются путем проверки наличия у user этого page, или если user является учетной записью типа «подписчик», а лидер - владельцем page.Справедливо ли это?

  2. Каждый идентификатор документа page будет автоматически сгенерирован Firestore (, как указано здесь ).Чтобы получить все страницы, принадлежащие user (или связанному лидеру), это так же просто, как запросить db.collection("pages").whereEqualTo.("page-owner", uid)?Где uid - уникальный идентификатор пользователя.Если будет 100 000 пользователей, а у каждого пользователя по 40 страниц, будет ли этот запрос эффективным?

Я действительно ценю этот ввод!Спасибо!

1 Ответ

0 голосов
/ 22 октября 2018
  1. Да

  2. Да, масштаб запросов зависит от размера набора результатов, а не от размера коллекции.

...