Оптимизировать модель данных Firestore - PullRequest
0 голосов
/ 04 октября 2018

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

Фактическая структура данных:

  • Пользователи
    • (ДАННЫЕ ПОЛЬЗОВАТЕЛЯ)
  • Песни
    • (SONG DATA)
    • Лирика (Массив фраз [фраза: '', startTime:…])
  • Воспроизведение (Сохранить данныекаждый раз, когда пользователи играют песню)
    • Оценка
    • SongID

Я хочу добавить функциональность каждого пользователя может знать, чтослова, выученные во время игры в качестве словарного запаса.

- Users
    -Vocabulary
       -Word1
         -wordId
         -timesPlayed
         -lastTimeAt(unix)
         -translation
- Words
    -Word
      -translation
      (more word data)

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

Словарь пользователей хранит ссылки на palbras только в общем словаре, поскольку они могут редактировать его совместно для всех пользователей.

Проблема, с которой я сталкиваюсь, состоит в том, что многие Священные Писания создаются вПожарная память около 300 слов для каждого пользователя, исполняющего песню, по сравнению с тем, что я в настоящее время делаю без этой функции (2 записи), - это хороший способ оптимизировать это.

1 Ответ

0 голосов
/ 04 октября 2018

Если вы хотите минимизировать количество записей в Firestore.

Я бы сделал три разных объекта:

  1. timesPlayed
  2. lastTimeAt (unix)
  3. перевод

Каждый объект будет иметь идентификатор слова в качестве ключа.Два и три объекта не представляют никакой проблемы, однако, объект timesPlayed будет дорого стоить на стороне клиента или облачной функции, которая будет его запускать.(Я бы сделал это на клиенте).

Вы можете вложить три объекта в словарь и использовать опцию слияния, установленную в true, при обновлении вашего пользовательского документа.

Надеюсь, это поможет.

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