Архитектура данных Cloud Firestore для вложенных структур данных - PullRequest
1 голос
/ 07 апреля 2020

Какова идеальная архитектура данных Cloud Firestore для вложенных списков маркеров?

Я запускаю сторонний проект по созданию небольшого приложения с «списком маркеров», аналогичного базовой функциональности Рабочий процесс . Основой c является то, что вы можете создавать вложенные текстовые списки маркеров произвольной глубины.

  • У любого конкретного элемента пули может быть много дочерних элементов пули
  • Вы можете свернуть / развернуть дочерние элементы определенного элемента пули
  • Вы можете удалить любой конкретный элемент пули и все его дочерние элементы
  • Было бы также хорошо, если бы вы могли перетащить любой элемент пули (и его дочерние элементы) в другое место в списке

Я хотел бы использовать Firebase и реагировать, чтобы построить это. Учитывая описанную выше базовую функциональность c, какой будет оптимальная архитектура данных в Cloud Firestore? Каков наилучший способ зафиксировать отношения родитель / ребенок между пулями? Что обеспечит хороший баланс операций чтения (отображения всех маркеров) и записи (удаления всех дочерних элементов определенной марки)?

Должен ли я просто хранить все свои «маркированные» документы в «пулях» уровня root »Собирать и отслеживать детей этой пули с помощью поля« дети », которое представляет собой массив идентификаторов или ссылки на дочерние пули? Пример:

bullets
  bullet_1
    text: "I am the bullet text."
    parent: null
    children: [bullet_2]
  bullet_2
    text: "I am also text."
    parent: bullet_1
    children: [bullet_3, bullet_4, bullet_5]
  bullet_6
    text: "I am also text."
    parent: null
    children: []

Или вместо того, чтобы хранить массив идентификаторов или ссылок на детей, я должен вместо этого хранить маркеры для детей во вспомогательных коллекциях своих родителей? Пример:

bullets
  bullet_1
    text: "I am the bullet text."
    parent: null
    children_subcollection
      bullet_2
        text: "I am also bullet text."
        parent: bullet_1
        children_subcollection_2 (are nested subcollections even possible?)
          bullet_3
            text: "I am but lowly bullet text."
            parent: bullet_2
          bullet_4
            text: "I am just more bullet text."
            parent: bullet_2
            ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...