Производительность поля Firestore Map с большим набором данных - PullRequest
0 голосов
/ 14 июля 2020

У меня есть список продуктов, каждый пользователь может купить несколько билетов на продукт. Когда я получаю продукт, мне нужно знать, сколько билетов купил пользователь для каждого продукта. В настоящее время у меня есть продукт как отдельная коллекция, и я получаю список билетов по продуктам для текущего зарегистрированного пользователя. Это отлично сработало, но я использовал оператор in, чтобы сделать один запрос для получения билетов в одном запросе для нескольких продуктов, а Firestore допускает только 10 элементов в операторе in

Я рассмотреть возможность хранения количества билетов на каждом продукте в виде карты. Как это влияет на производительность snapshotListener? Допустим, я слушаю 100 продуктов, и у каждого есть карта со 100 тыс. Ключей и значений, где ключ - это строка, а значение - Int.

Легко ли обновить карту, могу ли я сделать приращение на значение указанного поля c?

Безопасность не является проблемой, можно иметь счетчик билетов для всех пользователей publi c

Product {
    name: String
    ....
    tickets: {
       "USERID": 5,
       // 100k more records
    }
}

1 Ответ

1 голос
/ 14 июля 2020

Я подумываю сохранить количество билетов для каждого продукта в виде карты. Как это влияет на производительность snapshotListener?

Это не влияет на производительность чего-либо, кроме времени, необходимого для загрузки документа. легко обновить карту, могу ли я увеличить значение указанного поля c?

Да, это просто. Используйте точечную нотацию, чтобы найти поле для увеличения, и используйте FieldValue.increment (), чтобы увеличить его.

...