Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Realtime Database on Android

GDG SPb
February 04, 2017

Realtime Database on Android

Видео: https://www.youtube.com/watch?v=9AFmUM4vkpw

Полный набор инструментов для хранения информации в облаке и синхронизации с клиентами, независимо от наличия интернет соединения.
• Введение и обзор возможностей.
• Чтение и запись данных.
• Правила безопасности.
• Как хранить данные для правильного масштабирования.
• Работа в оффлайне (делаем вид, что интернет есть).

Автор: Рафаэль Гильязитдинов

Android-разработчик в компании Doist.com (Todoist, Twist). Имеет более 5 лет опыта разработки приложений под Android и 1.5+ миллиона человек по всему миру, использующих его продукты. Имеет опыт разработки под всё, на чём бежит Андроид: телефоны, планшеты, tv box-ы, Android Wear и даже Google Glass.

GDG SPb

February 04, 2017
Tweet

More Decks by GDG SPb

Other Decks in Technology

Transcript

  1. Realtime Database - Что это? • NoSQL база данных в

    облаке • Правила безопасности для валидации и доступа к данным • Синхронизация в реальном времени между всеми клиентами • Доступ к данным из локального кэша в режиме оффлайн • SDK для Android/iOS/JS + REST API • Быстрая настройка и деплоймент
  2. SDK, с чего начать Базовое • Создать проект в Firebase

    console • Настроить правила безопасности • Добавить в build.gradle библиотеку compile 'com.google.firebase:firebase-database:X.X.X' • Настроить ProGuard Продвинутое ++ • Добавить в build.gradle библиотеку compile 'com.firebaseui:firebase-ui:X.X.X' • Больше инфы про FirebaseUI https://github.com/firebase/FirebaseUI-Android
  3. Структура данных и Масштабирование • Все данные в Realtime Database

    хранятся в JSON • Нету таблиц и записей все в виде ключ-значение где JSON как объект • Ключами могут быть любые значения UTF-8/ASCII (ID пользователя/объекта и т.д.) либо могут быть сгенерированы для вас автоматически. • Максимальный уровень вложения 32 уровня. (Не увлекайтесь) • Денормализация для данных с 2х сторонней зависимостью, ключ как Index.
  4. Чтение и Запись данных • Как работать с Firebase Realtime

    Database • Запись данных любой объект (String/Long/Double/Boolean/Map<String, Object>/List<Object>) или свой класс (с пустым конструктором, публичными getters/setters). String userId = mDataBase.child(“users”).push().getKey(); User user = new User(“Test user name”, “[email protected]”); • Есть Transaction чтобы избежать Сoncurrent modifications
  5. Чтение и Запись данных • Чтение c помощью ValueEventListener.onDataChange() •

    addValueEventListener вызывает onDataChange() при добавлении и при каждом обновлении значения • addListenerForSingleValueEvent вызывает onDataChange()один раз для статичных данных • removeEventListener() убирает слушатель • Пример mPostReference = mDataBase.child("posts").child(mPostKey);
  6. Безопасность • Редактор с симулятором прямо в Firebase Console (JavaScript

    подобный синтаксис правил), REST API • Права на чтение/запись • Авторизация с помощью Firebase Authentication • Валидация записи данных • Индексы для сортировки и запросов Валидация Чтение/Запись Авторизация
  7. Работа в Оффлайне • Несколько мелочей и все работает как

    будто интернет есть. (10мб магии по дефолту) • Возможно сделать гарантировано доступными некоторые объекты (пользователи/избранное и тд) • Очень полезная штучка! Проверка онлайн ли вы без ConnectivityManager