Firebase Vs Supabase
Supabase и Firebase — это платформы, ориентированные на разработчиков, которые предлагают базы данных как услугу, а также дополнительные инструменты для создания бекенда. Основные отличия между ними заключаются в типе базы данных, архитектуре и подходе к обработке данных.
Видео сравнения
от John Kealy
! Про цены:
Supabase - хороший бесплатный тариф, позволяющий довольно многое. А тариф за 25$ увеличивает возможности примерно в 10 раз.
У Supabase (в отличии от Firebase) нет отслеживания количества скачиваемых данных (запросов). Основной критерий это объём. Т.е. при запросе таблицы с кучей полей в Firebase вы вылетите в трубу. А в Supabase важнее, сколько байтов вы скачаете.
Смотреть использовании лимитов надо в Project settings - Usage
Ключевые отличия Supabase и Firebase (офиц)
-
Тип базы данных:
- 0! Supabase: Основывается на PostgreSQL, что означает, что это реляционная база данных с поддержкой SQL-запросов. PostgreSQL поддерживает сложные запросы, связи (отношения между таблицами), транзакции и строгую структуру данных.
- Firebase: В основном использует NoSQL базу данных в формате Firebase Realtime Database или Firestore, где данные хранятся в виде JSON-структур (документов). Эти базы данных более гибкие, но менее строгие в плане схем данных.
-
Схема данных и типы запросов:
- Supabase: Строго типизированная структура с поддержкой SQL-запросов и реляционных связей между таблицами. Это делает её подходящей для приложений, которым важна строгая организация данных и работа с транзакциями.
- Firebase: Структура данных гибкая и схему данных можно изменить без миграций. Подходит для приложений с иерархической структурой данных, где данные изменяются динамично и не требуют сложных связей.
-
Автоматические API:
- Supabase: Генерирует [[REST API]] для каждой таблицы и функции в PostgreSQL автоматически. Также поддерживает real-time обновления на основе PostgreSQL LISTEN/NOTIFY.
- Firebase: Использует собственные SDK и API для взаимодействия с базой данных, также предоставляя реальное время через WebSocket. API обрабатывают изменения данных мгновенно, но Firebase работает в основном с JSON.
-
Хостинг и локальное развертывание:
- Supabase: Может быть развёрнут локально или на облачных платформах, таких как AWS или DigitalOcean, что даёт гибкость в управлении и настройке окружения.
- Firebase: Полностью управляемый сервис от Google, что ограничивает возможность кастомизации и локального развертывания. Однако это делает его более простым в использовании для небольших и быстро запускаемых проектов.
-
Аутентификация:
- Supabase: Предоставляет аутентификацию на базе GoTrue, которая поддерживает OAuth, OTP, Magic Links, поддержку нескольких поставщиков (Google, GitHub, Facebook и т.д.).
- Firebase: Firebase Authentication также поддерживает широкие возможности для авторизации через социальные сети, email/password, а также OTP и анонимную авторизацию.
-
Безопасность данных:
- Supabase: Поддерживает Row-Level Security (RLS) PostgreSQL, что позволяет создавать гибкие правила доступа для строк, таблиц или представлений на основе JWT-токенов.
- Firebase: Использует правила безопасности Firebase для управления доступом, которые позволяют задавать правила для чтения и записи на основе пользовательских ролей и путей данных.
-
Функции:
- Supabase: Поддерживает хранимые процедуры, триггеры, и функции PostgreSQL, что позволяет выполнять сложную логику на уровне базы данных.
- Firebase: Firebase Functions позволяет запускать JavaScript/TypeScript функции на стороне сервера. Это отдельный сервис, который интегрируется с Firebase, но работает вне базы данных.
-
Поддержка расширенной аналитики:
- Supabase: PostgreSQL поддерживает сложные аналитические запросы и работу с большими наборами данных. Поддерживает расширения, такие как PostGIS для геопространственных запросов.
- Firebase: Ограниченные возможности для аналитики. Firestore поддерживает ограниченный SQL-подобный язык для фильтрации данных, но без возможностей PostgreSQL для выполнения сложных запросов и агрегаций.
Итак, как выбрать?
-
Supabase подходит, если:**
- Вам нужен SQL и строгая структура данных.
- Ваше приложение требует транзакций, сложных запросов и реляционных связей.
- Вам нужна возможность развертывания базы данных локально или в облаке по вашему выбору.
-
Firebase подходит, если:
- Вы хотите простой в использовании сервис для быстрого прототипирования.
- Ваши данные могут быть гибко структурированы в формате JSON, без необходимости в сложных связях.
- Вы хотите использовать полностью управляемое решение от Google и не планируете локальные развертывания.
Каждая из этих платформ имеет свои сильные стороны в зависимости от особенностей проекта и требований к данным.
Мнения
@brozaurus
Я за Supabase
- В supa удобно смотреть данные в привычной табличной форме.
- Второе, возможно вынести логику (или ее часть) из FlutterFlow. Все будет работать надёжней и быстрее.
- Есть возможность работать по API
- Есть реалтайм обновление базы
- Можно развернуть на своём сервере в России и будет не нарушать российский законы о хранении данных и быстрее работать.
- можно использовать GraphQL для для визуального сбора нашего запроса из разных таблиц
- отлично подходит для векторного поиска, интеграции в N8N.
@darkh1b
Supabase фильтрация происходит прямо в базе данных, что реально снимает нагрузку с устройства и упрощает работу с большими объемами данных. Firebase тоже крутой, но для таких вещей его часто нужно оборачивать в дополнительные костыли или переносить логику на сторону клиента/сервера.
Через Cloud Functions можете все это сделать, но опять же это сложно так как вам придется писать код на языке JavaScript или TypeScript для реализации логики