База данных Firebase RealTime с операциями в Android с примерами
База данных Firebase Realtime - это база данных, размещенная в облаке, то есть она работает в облаке, и доступ для пользователя предоставляется как услуга. Он хранит данные в формате JSON (Javascript Object Notation), формате для хранения или передачи данных. Все подключенные к нему пользователи могут получить доступ к данным в режиме реального времени.
Особенности базы данных Firebase Realtime?
- В реальном времени : благодаря синхронизации данных, используемой в режиме реального времени, каждое обновление мгновенно принимается устройствами / клиентами.
- Нет необходимости в сервере приложений : поскольку к базе данных можно получить доступ непосредственно с мобильного устройства или браузера, нет необходимости в сервере приложений.
- Поддержка на разных языках и платформах :
- Разделение данных : клиент может разделить данные по нескольким экземплярам базы данных для одного и того же проекта.
- Клиентский код : динамические приложения с защищенными данными могут быть доступны непосредственно из клиентского кода.
- Кросс-платформенность : его можно использовать для создания серверной части для различных платформ, таких как Android, iOS, Web, iOS, а также для JavaScript SDK.
Структурирование базы данных в реальном времени:
База данных Firebase Realtime хранит данные как одно большое дерево JSON. Он легко хранит простые данные, но неструктурированные иерархические данные сложно организовать. В отличие от SQL здесь нет таблиц.
- Что такое модель дерева JSON?
Модель дерева JSON основана на JSON (нотация объектов JavaScript), используемая для представления документа JSON, который обычно состоит из пары ключ-значение в памяти. - Зачем структурировать данные (каковы преимущества этого)?
- Если данные хранятся в хорошо отформатированной структуре, их легко сохранить, а также легко восстановить.
- Запросы к структурированным данным упрощаются.
- Становится возможным ссылаться на данные в структурированном формате.
- Ключевые моменты, которые следует помнить при структурировании данных:
Перед записью и чтением данных в базу данных основной задачей разработчика должно быть построение структуры базы данных.
- Учитывайте предел вложенности:
Вложение данных должно выполняться надлежащим образом, чтобы их было легко читать с помощью слушателей (слушатели используются для чтения данных из базы данных). Избегайте ненужного размещения уровней в базе данных. Firebase также допускает только 32 уровня вложенности.Например:
// Простой пример структурирования формата JSON { "userinfo": { "а": { "name": "GfG1", "адрес": "GeeksForGeeksOne", "Информация для заказа": { «p1»: { "product_id": "1", «количество»: «5», "цена": "500", "address_of_delivery": "xyz, abc, ..." }, «p2»: { "product_id": "2", «количество»: «10», "цена": "1000", "address_of_delivery": "xyz2, abc, ..." } } }, "b": { "name": "GfG2", "адрес": "GeeksForGeeksTwo", "Информация для заказа": { «p1»: { "product_id": "1", «количество»: «12», «цена»: «1500», "address_of_delivery": "pqr, abc, ..." }, «p2»: { "product_id": "2", «количество»: «18», "цена": "1000", "address_of_delivery": "pqr2, abc, ..." } } } } }
В этом примере получение данных имен пользователей очень сложно, поскольку нам нужно получить доступ к дочерним узлам users_info, которые загружают данные, имеющие размер в несколько МБ (в этом случае загружаются имя, orders_details, адрес и т. Д.).
- Разработайте денормализованную форму данных:
Сглаживание данных должно быть выполнено правильно, это означает, что данные должны быть разделены на разные части без какой-либо двусмысленности. Это обычно называется денормализацией, когда для повышения производительности чтения мы обеспечиваем избыточность данных.Например:
// Пример формата JSON с денормализованной формой, например, в пункте 1 { "user_info": { "а": { "name": "GfG1", "адрес": "GeeksForGeeksOne" }, "b": { "name": "GfG2", "адрес": "GeeksForGeeksTwo" } }, "Информация для заказа": { "а": { «p1»: { "product_id": "1", «количество»: «5», "цена": "500", "address_of_delivery": "xyz, abc, ..." }, «p2»: { "product_id": "2", «количество»: «10», "цена": "1000", "address_of_delivery": "xyz2, abc, ..." } }, "b": { «p1»: { "product_id": "1", «количество»: «12», «цена»: «1500», "address_of_delivery": "pqr, abc, ..." }, «p2»: { "product_id": "2", «количество»: «18», "цена": "1000", "address_of_delivery": "pqr2, abc, ..." } } } }
В этом примере данные разделены на user_info и order_deatils. Благодаря этому данные становятся доступнее, а значит, нет необходимости загружать ненужные данные большого размера. Здесь получение данных имен пользователей очень просто, поскольку нам нужно получить доступ к дочерним узлам users_info, которые загружают данные, имеющие только имя и адрес, и никакие детали заказов не обрабатываются.
- Создайте динамическую по своей природе структуру:
Структура данных должна быть масштабируемой. Иногда для облегчения доступа к данным необходимо реализовать дублирование в базе данных.Например:
// Пример формата JSON, объясняющий свойство Scaling { "student_info": { «1»: { "name": "GfG1", "roll_no": "1", "экзамен_борда": "abc" }, «2»: { "name": "GfG2", "roll_no": "2", "экзаменационная доска": "pqr" }, «3»: { "name": "GfG3", "roll_no": "3", "экзамен_борда": "abc" } }, "board_info": { «abc»: { "student_names": { "GfG1": правда, "GfG2": ложь, "GfG3": верно } }, "pqr": { "student_names": { "GfG1": ложь, "GfG2": правда, "GfG3": ложь } } } }
В приведенном выше примере, чтобы легко получить доступ к базе данных, имя доски хранится в информации о каждом ученике, а также в информации доски хранится имя ученика и доска, которую он имеет. Если бы мы не сохранили данные под информацией о досках, было бы сложно собрать имена студентов, имеющих конкретную доску.
- Учитывайте предел вложенности:
Запись / вставка данных в базу данных Firebase Realtime
Запись данных в Firebase - очень простая задача. Но перед записью / вставкой данных в базу данных реального времени необходимо выполнить структурирование данных. Вставка или запись данных в базу данных Firebase Realtime выполняется в Android с помощью функции setValue () . Вставку данных в базу данных Firebase Realtime можно рассматривать как одну из операций CRUD.
setValue (): эта функция используется для:
- Замените данные в указанной позиции
- Если в указанной позиции нет данных, он записывает данные непосредственно в эту позицию.
Ему можно передать следующие значения / типы:
- Нить
- карта
- Список
- Двойной
- Логический
- Длинный
- Определяемый пользователем объект: здесь следует учитывать, что определяемый пользователем объект, имеющий конструктор по умолчанию, также может быть передан в качестве аргумента функции.
Шаги для записи / вставки данных в базу данных Firebase Realtime:
Учтите, что мы должны сохранить имя пользователя в базе данных.
- Создать ссылку на базу данных:
// Считаем, что нам нужно хранить // это в базе данных Строка name = "GfG1";
- Найдите ссылку на данные, в которых должно быть сохранено значение, с помощью функции child ():
// Создание объекта справочника по базе данных Firebase Ссылка на DatabaseReference; ссылка = FirebaseDatabase.getInstance (). getReference ();
- Используйте указанный объект и функцию setValue () со значением, которое будет сохранено в качестве аргумента, для записи данных:
// Вставляет данные в базу данных reference.child ("пользователь"). setValue (имя);
Выход:
Пример 2: Давайте рассмотрим другой пример сохранения пользовательского объекта в базе данных.
- ШАГ 1:
// Создаем класс User класс Пользователь { Имя строки; Строковый адрес; Пользователь() { name = ""; адрес = ""; } Пользователь (имя строки, адрес строки) { this.name = name; this.address = адрес; } }
- ШАГ 2:
// Создаем определяемый пользователем объект Пользователь user1 = новый пользователь ("GfG1", "GeeksForGeeks");
- ШАГ 3:
// Создание объекта справочника по базе данных Firebase Ссылка на DatabaseReference; ссылка = FirebaseDatabase.getInstance (). getReference (); // Вставляем пользовательский объект в базу данных reference.child ("пользователь"). setValue (user1);
Выход: