Я не знаю, как устроена ваша игра или сколько людей играет, но я был бы удивлен, если бы вы установили бесплатное ограничение для студенческого проекта ( вы можете хранить 1 ГБ и загружать 10 ГБ ). Эта строка составляет 8 байтов, давайте предположим, что в худшем случае: как строка UTF32, это будет 32 байта данных - вам придется уменьшить это 312 миллионов раз, чтобы достичь предела (будут некоторые издержки, но я не могу представить, что это очень сильно влияет). Если вы боитесь, что вам будут платить, вы можете отказаться от кредитной карты, чтобы вдвойне быть уверенным, что вы остаетесь в бюджете студента.
Если вы хотите уменьшить объем чтения / письма, Я мог бы предложить, чтобы вместо: key: <value_string>
(то есть вместо session_id: "1r/5w/3r"
)
вы структурировали больше как:
key:
- wrong: 5
- right: 3
Так что под вашим ключом вложено еще два значения. Один за все неправильные ответы, просто увеличивающееся целое число. Тогда один для всех правильных ответов: просто увеличивающееся целое число.
Механизм «добавления» будет транзакцией , и вы должны использовать их независимо от того, изменяете ли вы строку или счетчик , Firebase старается быть умным с использованием данных и кэшированием в автономном режиме, но вы не получаете гораздо большего контроля, чем это.
Если порядок действительно имеет значение, вы можете захотеть стать умнее. Как правило, вы захотите работать с абстракциями, которые дает вам база данных реального времени, чтобы максимизировать любую внутреннюю оптимизацию (ей нравится думать с точки зрения JSON документов, так что думайте о вашем макете данных аналогично). Это может быть неоптимальным для данных, но вы можете вместо этого рассмотреть возможность использования какой-либо бухгалтерской книги (возможно, используя ServerValue.Timestamp для записи одного правильного или неправильного ответа и облачной функции прослушивание для подведения итогов в фоновом режиме после игры - это было бы особенно полезно, если вы планируете, чтобы много пользователей пытались написать один и тот же ключ одновременно).