База данных Firebase RealTime с операциями в Android с примерами

Опубликовано: 17 Августа, 2021

База данных Firebase Realtime - это база данных, размещенная в облаке, то есть она работает в облаке, и доступ для пользователя предоставляется как услуга. Он хранит данные в формате JSON (Javascript Object Notation), формате для хранения или передачи данных. Все подключенные к нему пользователи могут получить доступ к данным в режиме реального времени.

Особенности базы данных Firebase Realtime?

  1. В реальном времени : благодаря синхронизации данных, используемой в режиме реального времени, каждое обновление мгновенно принимается устройствами / клиентами.

  2. Нет необходимости в сервере приложений : поскольку к базе данных можно получить доступ непосредственно с мобильного устройства или браузера, нет необходимости в сервере приложений.
  3. Поддержка на разных языках и платформах :

  4. Разделение данных : клиент может разделить данные по нескольким экземплярам базы данных для одного и того же проекта.
  5. Клиентский код : динамические приложения с защищенными данными могут быть доступны непосредственно из клиентского кода.
  6. Кросс-платформенность : его можно использовать для создания серверной части для различных платформ, таких как Android, iOS, Web, iOS, а также для JavaScript SDK.

Структурирование базы данных в реальном времени:

База данных Firebase Realtime хранит данные как одно большое дерево JSON. Он легко хранит простые данные, но неструктурированные иерархические данные сложно организовать. В отличие от SQL здесь нет таблиц.

  • Что такое модель дерева JSON?
    Модель дерева JSON основана на JSON (нотация объектов JavaScript), используемая для представления документа JSON, который обычно состоит из пары ключ-значение в памяти.
  • Зачем структурировать данные (каковы преимущества этого)?
    • Если данные хранятся в хорошо отформатированной структуре, их легко сохранить, а также легко восстановить.
    • Запросы к структурированным данным упрощаются.
    • Становится возможным ссылаться на данные в структурированном формате.
  • Ключевые моменты, которые следует помнить при структурировании данных:

    Перед записью и чтением данных в базу данных основной задачей разработчика должно быть построение структуры базы данных.

    1. Учитывайте предел вложенности:
      Вложение данных должно выполняться надлежащим образом, чтобы их было легко читать с помощью слушателей (слушатели используются для чтения данных из базы данных). Избегайте ненужного размещения уровней в базе данных. 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, адрес и т. Д.).

    2. Разработайте денормализованную форму данных:
      Сглаживание данных должно быть выполнено правильно, это означает, что данные должны быть разделены на разные части без какой-либо двусмысленности. Это обычно называется денормализацией, когда для повышения производительности чтения мы обеспечиваем избыточность данных.



      Например:

      // Пример формата 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, которые загружают данные, имеющие только имя и адрес, и никакие детали заказов не обрабатываются.

    3. Создайте динамическую по своей природе структуру:
      Структура данных должна быть масштабируемой. Иногда для облегчения доступа к данным необходимо реализовать дублирование в базе данных.

      Например:

      // Пример формата 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:
Учтите, что мы должны сохранить имя пользователя в базе данных.

  1. Создать ссылку на базу данных:
    // Считаем, что нам нужно хранить
    // это в базе данных
    
    Строка name = "GfG1";
    
  2. Найдите ссылку на данные, в которых должно быть сохранено значение, с помощью функции child ():
    // Создание объекта справочника по базе данных Firebase
    
    Ссылка на DatabaseReference;
    ссылка = FirebaseDatabase.getInstance (). getReference ();  
    
  3. Используйте указанный объект и функцию 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); 
    

    Выход:

Хотите более динамичную и конкурентную среду для изучения основ Android?
Щелкните здесь, чтобы перейти к уникальному руководству, составленному нашими экспертами с целью мгновенно подготовить вашу отрасль!