Я советую вам не использовать 1, 2, 3, 4
в качестве ключей для ваших узлов. Использование последовательных идентификаторов для этого является анти-паттерном, когда дело доходит до базы данных Firebase в реальном времени, поскольку оно наверняка вызовет проблемы с масштабируемостью.
Масштабируемость зависит от того, как Firesbase распределяет данные по своему уровню хранения. Таким образом, последовательные идентификаторы имеют больше коллизий хэширования, что означает, что вы быстрее достигнете ограничений записи. Наличие более случайных идентификаторов обеспечивает равномерное распределение записей по уровню хранения.
Если вам интересно, здесь , вы можете найти алгоритм здесь push()
метод.
Если вы заинтересованы в реализации своего собственного механизма, вы можете взглянуть на UUID , который может помочь вам генерировать уникальные ключи для ваших узлов базы данных Firebase без использования метода push()
.
import java.util.UUID;
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference userRef = rootRef.child("Users");
//key = userRef.push().getKey();
key = UUID.randomUUID().toString();
Это другой подход, но я настоятельно рекомендую вам использовать эти отправленные идентификаторы, потому что они основаны на времени и генерируются полностью на клиенте без консультации с сервером.