GCP FireStore: тип карты «Карта карт» и «Массив карт» - PullRequest
1 голос
/ 30 октября 2019

Сценарий : Сущность A является родительской, B является дочерней по отношению A к 1 со многими, C является дочерней по B от 1 до многих. Допустим, A - это учетная запись, B в Contact & C - это адрес

. Нам нужно иметь всю структуру в одном документе, поэтому никаких вложенных коллекций и вложенных документов. Для дочерних объектов у нас есть 2 варианта: Карта карт или Массив карт. Мы склонны к «карте карт», так как мы не можем установить уникальный идентификатор в массиве на верхнем уровне. Это должно быть поле внутри массива, а затем в сценарии его сложно искать, так как нам нужно перебрать все записи.

Таким образом, конфигурация будет выглядеть примерно так : - Определитьполе типа «Карта» внутри учетной записи с именем «Контакт» - внутри контакта будут только поля типа «Карта». Каждое имя поля карты является уникальным идентификатором контакта. Итак, скажем, 2 карты: ContactId1, ContactId2 - Внутри карты ContactId1 у нас будет какое-то поле Контакта, например имена, а затем у нас будет еще одно поле «Адрес» типа Map. - «Адрес» будет иметь только поля типа карты внутри него. Каждое имя поля карты является уникальным идентификатором адреса: AddressId1, AddressId2 - в AddressId1 карты будут поля для адреса, т. Е. StreetName, No, City, Zipcode и т. Д.

Вопросы :

  • Является ли тип данных «Карта карт» лучшим подходом, чем тип данных «Массив карт» для нашего сценария
  • Каковы плюсы и минусы обоих подходов
Account{
    Name: "My Account Name"
    Contact:
        Contact123:
          FirstName: "F1"
          LastName: "L1"
          Address:
              Address1231:
                   Street: "Street1"
                   City: "City1"
              Address1232:
                   Street: "Street2"
                   City: "City2"
        Contact234:
          FirstName: "F2"
          LastName: "L2"
          Address:
              Address2341:
                   Street: "Street3"
                   City: "City3"
              Address2342:
                   Street: "Street4"
                   City: "City4"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...