Firestore биллинг для чтения документа с вложенными коллекциями - PullRequest
0 голосов
/ 15 января 2019

Я создаю приложение, в котором хранится количество минут, которое пользователь изучил с моим приложением. Моя база данных Firestore начинается с коллекции «users», и у каждого пользователя есть свой собственный документ, названный по его userID, созданному в Auth.

У меня вопрос, если я читаю их документ userID, у которого в подколлекциях много документов, считается ли он за одно чтение или также учитывается количество документов в подколлекциях?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Ответ от Торевина в основном правильный, но в нем отсутствует одна важная деталь. Это говорит:

если вы получаете документ; где угодно, это считается как чтение

Это не совсем так. Кэшированные чтения документа не оплачиваются как чтения. Это одна из важных функций клиентских SDK Firestore, которая помогает снизить расходы на выставление счетов. Если вы получите один документ с использованием «источника» по умолчанию ( опции источника - это «кэш», «сервер» или «по умолчанию»), то сначала обращаются к кешу, а если он свежий, то вы получить документ без биллинга.

То же самое относится и к результатам запроса. Если документ поступает из кэша, для этого чтения нет выставления счетов. Однако для каждого запроса требуется как минимум 1 чтение документа.

Я не уверен, что Торевин имеет в виду в комментариях: «Они рекомендуют вам сделать несколько чтений вместо одного большого, потому что таким образом вы сэкономите деньги». Все чтения имеют одинаковый «размер» с точки зрения выставления счетов, учитывая только стоимость самого чтения. Размер документа имеет значение только для стоимости использования выхода в Интернет, для которого имеется документация по ценам .

Стоит отметить, что документы не могут «содержать» другие документы. Документы содержатся в коллекциях или вложенных коллекциях. У этих коллекций просто есть «путь», который описывает, где они живут. Подколлекция может существовать без «родительского» документа. Когда документ не существует, но под ним организована коллекция, идентификатор документа отображается курсивом в консоли. При удалении документа с помощью клиентского API ни одна из его подколлекций не удаляется. Говорят, что удаление в этом отношении "мелкое".

0 голосов
/ 15 января 2019

Если вы имеете в виду, читается ли 1, чтобы получить доступ к Document (в данном случае ваш генерируемый идентификатор пользователя) из FireStore?

Я бы предположил, что ответом будет "да".

Любой запрос или чтение из Firestore извлекает только ссылку, на которую вы отображаете. Например, если вы захватите третий документ в вашем User -> userID -> 3rd document, будет возвращен только третий документ. Ни один из других документов в этой коллекции или любой из коллекций, кроме userID.

Это отвечает на ваш вопрос или вы спрашиваете что-то совершенно другое?

Для справки: https://firebase.google.com/docs/firestore/pricing#operations

Редактировать: с каждого отдельного документа, извлеченного из запроса, взимается плата. Например, если вы извлекаете родительскую коллекцию (с 6 документами в ней), с вас будет взиматься плата за все 6 документов. Идея состоит в том, чтобы захватить только нужные вам документы или использовать курсор, который позволит вам возобновить длительный запрос. Например, если вы хотите, чтобы документ имел отношение к использованию данных на определенную дату (если ваши данные настроены таким образом), вам нужно только извлечь этот конкретный документ, а не получить все документы в коллекции за другие дни. ,

Простой способ думать об этом: если вы извлекаете документ; где угодно, это считается как чтение.

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