Unity + Firebase: возможно ли добавить данные к значению ключа или мне нужно каждый раз получать данные ключей? - PullRequest
0 голосов
/ 16 февраля 2020

Я немного обеспокоен тем, что достигну ограничений свободного объема данных Firebase в студенческом проекте. В основном мой вопрос: возможно ли добавить в конец строки вместо получения ключа и значения, добавления и загрузки снова. Чего я хочу достичь: я должен создать статистику правильных / неправильных ответов пользователя на конкретные вопросы. Я хочу иметь kvp: answers: 1r / 5w / 3r Где число - это число пользователей, а r / w означает правильное неверное. Когда сеанс гадания заканчивается, я хочу добавить / numberOfGuesses + RightOrWrongAnswer и конец.

Я использую Unity 2018.

Заранее благодарю за помощь!

1 Ответ

0 голосов
/ 18 февраля 2020

Я не знаю, как устроена ваша игра или сколько людей играет, но я был бы удивлен, если бы вы установили бесплатное ограничение для студенческого проекта ( вы можете хранить 1 ГБ и загружать 10 ГБ ). Эта строка составляет 8 байтов, давайте предположим, что в худшем случае: как строка UTF32, это будет 32 байта данных - вам придется уменьшить это 312 миллионов раз, чтобы достичь предела (будут некоторые издержки, но я не могу представить, что это очень сильно влияет). Если вы боитесь, что вам будут платить, вы можете отказаться от кредитной карты, чтобы вдвойне быть уверенным, что вы остаетесь в бюджете студента.

Если вы хотите уменьшить объем чтения / письма, Я мог бы предложить, чтобы вместо: key: <value_string> (то есть вместо session_id: "1r/5w/3r")

вы структурировали больше как:

key:
 - wrong: 5
 - right: 3

Так что под вашим ключом вложено еще два значения. Один за все неправильные ответы, просто увеличивающееся целое число. Тогда один для всех правильных ответов: просто увеличивающееся целое число.

Механизм «добавления» будет транзакцией , и вы должны использовать их независимо от того, изменяете ли вы строку или счетчик , Firebase старается быть умным с использованием данных и кэшированием в автономном режиме, но вы не получаете гораздо большего контроля, чем это.

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

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