Стани премиум член и добиј попуст на 2000+ производи и куп други бенефити!

Supabase до срж

Fatal1ty_

Großmeister
28 февруари 2008
23.819
33.995
roka.mk
Уште од 2011 година компанијата Firebase градеше база на податоци и сервиси наменети за создавање бекенд за мобилни и веб-апликации, а подоцна и за мултиплеер игри.

Во октомври 2014 Google ја откупи Firebase. Оттогаш во Firebase се појавија многу нови сервиси и целата таа машинерија се врти како еден вид „црна кутија“ на серверите на Google. Пред шест години, на почетокот на 2020, една група програмери го ѕирна Firebase и си помисли: „Ајде да го направиме истото, но со отворен код и врз SQL!“ Така се роди Supabase, проект со искрена цел да им даде на програмерите контрола врз своите податоци и да ги ослободи од сопственичките (proprietary) стеги.
Замислете си ја Firebase, но без тајните на „црната кутија“, каде наместо NoSQL имате вообичаен SQL (сервисот е изграден врз PostgreSQL).
Supabase претставува збир на готови сервиси (база на податоци, автентикација, realtime, складиште за датотеки и слично), кој му се сервира на програмерот со неколку команди.

Сакаш бекенд „од кутија“? Оп повели: код не ти треба, притисни копче и поврзи ја својата апликација. Сега секој може да си подигне сопствен сервер и да не се нервира дека утре моќниот Google ќе го затвори сервисот или „ќе ја обнови лиценцата“. Supabase живее на GitHub и е отворен за секого... од почетник до искусен архитект. Зад проектот стои активна заедница, а кодот редовно се дотерува и „пегла“. А со ширењето на Vibe Coding, кога на невронските мрежи им е поудобно да работат со API отколку да пишуваат логика за базата, подемот на Supabase тргна експоненцијално.

Што е всушност Supabase?​

Накратко: Supabase е отворена алтернатива на Firebase, збир сервиси што ви помагаат брзо да изградите полноправен бекенд за вашата апликација. Целиот код е отворен и во секое време можете да ѕирнете под хаубата, па дури и да прекроите нешто по свој вкус. Не мора да погодувате како функционира системот одвнатре, бидејќи сѐ е транспарентно и достапно.

Supabase е како комплет за составување од кој можете да го склопите бекендот од соништата. Во срцевината лежи моќната релациска база PostgreSQL, која знае да складира и обработува податоци преку познатиот SQL. Кон неа е додаден автоматски REST API. Сакаш да работиш со податоци преку веб-барања, повели, готово за неколку минути. Тука е и realtime-сервисот, кој веднаш ги испраќа ажурирањата на податоците; автентикација со поддршка за Google, GitHub, па дури и magic link (еднократна врска за најава испратена на е-пошта), за да не ги мачите корисниците со лозинки и складиште за датотеки. Со еден збор, се што ви треба за да не барате по интернет стотина различни услуги.

Додека Firebase е повеќе за NoSQL и сопственички решенија, PostgreSQL е зрела и моќна база што ја знаат и ја сакаат стотици и илјади програмери. Supabase е отворен и не ви наметнува свои правила, за разлика од Firebase, кој може да ви покаже аналитика, но е затворен за внатрешни измени. Овде вие целосно ги поседувате своите податоци, што значи и поголема слобода на избор... сакаш пушти локално, сакаш во облак, и се е под ваша контрола.

Технолошки стек на Supabase​

1. Јадро: PostgreSQL со екстензии (на пример, PostgREST, pgcrypto)
2. Бекенд: Node.js (или Go) за API и авторизација
3. Клиентски библиотеки: JavaScript/TypeScript SDK, Flutter и други
4. Веб-панел за управување: web UI изграден со React
5. Можности за деплојмент: cloud-hosted и локално подигнување (преку контејнери, docker-compose)
6. Архитектура на realtime преку websocket
7. Интеграции: GraphQL, RESTful API, Webhooks

Што е потребно за да се подигне Supabase?​


За брзо подигнување на Supabase на свој компјутер, креаторите предвидоа употреба на Docker и docker-compose.
Во нив се спакувани сите потребни сервиси заедно: базата PostgreSQL, API-то, realtime-серверот и останатото и се се стартува наеднаш.

Ваквото пакување значително го олеснува животот: не мора рачно да го конфигурирате секој компонент, доволно е да имате Docker, неколку команди и целиот бекенд на вашиот локален компјутер е стартнат.

Од хардверска страна, за локален развој доволен е обичен лаптоп од средна класа. На пример, двојадрен процесор со 4 гигабајти RAM ќе ја заврши работата, но подобро е да предвидите 8 GB за секој случај. Тоа обезбедува попаметна работа на контејнерите и овозможува да пуштите дополнителни алатки.
Секако, при интензивна работа со големи количества податоци треба да бидете подготвени за пораст на потрошувачката на ресурси, но за едноставни прототипови Supabase е сосема лесен.

Supabase одлично работи на Linux, macOS и Windows, важно е само Docker да се стартува правилно. Освен тоа, Supabase нуди и облачен сервис каде воопшто не конфигурирате ништо туку само создавате проект и го користите API-то.

Достапни се и клиентски SDK за веб (JavaScript/TypeScript), за мобилни платформи (Flutter, React Native), па дури и за серверски апликации, што ја прави Supabase удобна алатка во најразновидни сценарија на развој.
Барањата за продукција (production) зависат од оптоварувањето. Кога апликацијата ќе излезе надвор од локалниот тест и почне да опслужува вистински корисници, барањата растат. Тука се зависи од интензитетот на барањата, обемот на податоци и функционалноста. Најчесто се користат облачни VPS или managed сервиси со посветен PostgreSQL, на пример, DigitalOcean, AWS или сопствениот сервис на Supabase. Минимумот е 2–4 процесорски јадра и 8–16 GB RAM, но за голем проект прагот ќе биде значително повисок.

Важно е да се запомни дека Supabase нуди бекенд-стек врз PostgreSQL, така што оптимизацијата на базата и скалирањето се клучни точки на продукцијата.

Функционалност и ограничувања на Supabase​


Еден од главните адути на Supabase е вградената поддршка за realtime, можноста во реално време да ги гледате ажурирањата на податоците директно во апликацијата. Заборавете на маките со веб-сокети и подесувања на сервери: сe е веќе готово. Едноставно го вклучувате realtime за потребните табели во базата, и промените веднаш се распраќаат до сите клиенти. Ова е особено вредно за чет-апликации, огласни табли, dashboards и други производи каде е важна моменталната реакција на настани.

Supabase се темели на PostgreSQL (тоа веќе го споманв неколку пати) една од најмоќните и најпроверените бази. Тоа значи дека можете да го користите познатиот SQL, да создавате сложени врски меѓу табелите, да градите аналитички барања и да работите со трансакции. Ваквото ниво на контрола и флексибилност е далеку повисоко од она кај повеќето NoSQL-сервиси и одговара за проекти со сериозна бизнис-логика и структурирани податоци. Но најважно, со базата можете да работите како со API, што одлично помага за решавање на CRUD-задачите. И го поедноставува развојот доколку користите невронски мрежи.

Ниту една современа апликација не поминува без безбедност, а Supabase тоа одлично го разбира. Вградениот систем за автентикација поддржува регистрација и најава преку е-пошта, лозинки, социјални мрежи (Google, GitHub и други), како и magic link „волшебни“ врски за најава без лозинка. Освен тоа, постојат механизми за пристап и ограничување на правата на корисниците на ниво на базата, што овозможува да се гради повеќеслоен безбедносен систем.

Supabase нуди удобно вградено складиште за датотеки: фотографии, документи, медиуми, се е под контрола и со можност за флексибилни подесувања на пристапот. Добивате пригоден API за прикачување, преземање и управување со датотеки, што ви овозможува целосно да се фокусирате на развојот на функционалноста наместо на интеграција со одделни облачни складишта.

Supabase е backend-as-a-service кој практично работи по принципот „поврзи и користи“. Тоа значи дека наместо мачење со пишување серверски код и подесување на инфраструктура, добивате готови сервиси со автоматско генерирање API и realtime-ажурирања. Ваквиот пристап значително го забрзува развојот, го скратува времето за излегување на производот на пазарот и го намалува бројот на грешки.

За разлика од затворените платформи, Supabase е целосно отворен (ок и ова го кажав сто пати до сеа) и можете да видите како се поставени сите сервиси, да го проучите нивниот код, па дури и да учествувате во развојот на проектот. Ако ви недостасува некоја функционалност или ви треба прилагодување, самите можете да внесете измени или да создадете сопствени екстензии. Така не зависите од туѓа волја и не останувате приковани за ограничувањата на сопственичкиот софтвер.

Supabase е проследен со квалитетна и разбирлива документација, каде чекор по чекор се објаснуваат сите можности на сервисот, примери за работа и најдобри практики. Покрај тоа, околу проектот се собра пријателска и активна заедница, програмерите ги споделуваат искуствата, си помагаат меѓусебно и создаваат корисни алатки и приклучоци. Тоа го прави процесот на учење не толку страшен, а решавањето на проблемите многу побрзо.

Секогаш има компромиси, па ајде да позборуваме и за ограничувањата.

Supabase cloud нуди неколку тарифни планови, вклучително и бесплатен. Но ограничувањата на бесплатниот план по број на истовремени поврзувања, обем на складиште и база, обем на сообраќај го прават погоден само за прототипови. Ако планирате да ја користите апликацијата во продукција под оптоварување, ќе мора да преминете на платен план, а тој започнува од 25$.

Екосистемот на Supabase е помала во споредба со Firebase.

Firebase постои веќе многу години и се обраснала со огромен збир интеграции, приклучоци и алатки што покриваат многу сценарија на развој. Supabase е помлад проект и се уште не може да се пофали со истиот замав и стабилност. Екосистемот е помала, што понекогаш значи дека задачите мора самите да ги решавате, да пишувате обвивки и заобиколни решенија, или да чекате нови функции од заедницата.

Потенцијални тешкотии со скалирањето. Иако Supabase го поедноставува подигнувањето на бекендот, при излегување на ниво на голема продукција можат да се појават нијанси со балансирањето на оптоварувањето, репликацијата на базата и напредното безбедносно подесување. Сето тоа бара дополнителни знаења и вештини од DevOps и DBA, бидејќи Supabase сам по себе е првенствено збир сервиси, а не целосно управувано решение како Firebase. При голем сообраќај може да затреба значителна оптимизација и прилагодување.

Зависност од PostgreSQL. PostgreSQL е одлична релациска база, но не е универзално решение за сите задачи. Ако проектот бара масовни NoSQL-колекции, сложена обработка на текови или OLAP-аналитика, Supabase може да не одговара поради ограничувањата на архитектурата. Тука ќе биде потребен или хибриден систем, или друга платформа скроена за такви задачи. Важно е однапред да ги разберете овие ограничувања за да не паднете во стапицата на избор на несоодветна алатка.

Supabase ќе одговара ако ви треба готов бекенд со отворен код и ако ви е важна целосна контрола врз податоците. Особено често сервисот се користи за создавање прототипови без длабоко нурнување во бекендот и при буџетски ограничувања.

Да загребеме под површината​


Да создадеме клиент за интеракција со Supabase:
Python:
python
# Го инсталираме клиентот supabase-py

pip install supabase


from supabase import create_client, Client

#URL на вашиот проект и јавниот anon клуч се наоѓаат во Supabase Dashboard

SUPABASE_URL = "https://xyzcompany.supabase.co"
SUPABASE_KEY = "public-anon-key"

#Создаваме клиент за интеракција со Supabase

supabase: Client = create_client(SUPABASE_URL, SUPABASE_KEY)

#Сега може да се работи со базата и со другите сервиси на Supabase

Пример за CRUD операции и подесување на realtime настани:

Python:
import asyncio
from supabase import create_client

SUPABASE_URL = "https://xyzcompany.supabase.co"
SUPABASE_KEY = "public-anon-key"

supabase = create_client(SUPABASE_URL, SUPABASE_KEY)

Создавање на нов запис (Create)​


Python:
new_user = supabase.table("users").insert({"name": "Иван", "email": "[email protected]"}).execute()
print("Додадовме корисник:", new_user.data)

Читање на записи (Read)​


Python:
users = supabase.table("users").select("*").execute()
print("Список на корисници:", users.data)

Ажурирање на запис (Update)​


Python:
update_response = supabase.table("users").update({"email": "[email protected]"}).eq("name", "Иван").execute()
print("Го ажуриравме корисникот:", update_response.data)

Бришење на запис (Delete)​


Python:
delete_response = supabase.table("users").delete().eq("name", "Иван").execute()
print("Го избришавме корисникот:", delete_response.data)

Подесување на realtime претплата (async пример)​


JavaScript:
async def listen_realtime():
    def on_insert(payload):
        print("Нов запис:", payload)

    subscription = supabase \
        .from_("users") \
        .on("INSERT", on_insert) \
        .subscribe()

    # За да работи претплатата, потребен е event loop
   await asyncio.sleep (60)  # ги слушаме настаните 60 секунди

# Стартување на realtime listener (во вистинска апликација може да биде организирано поинаку)
asyncio.run(listen_realtime())

Како брзо да се подигне бекенд и да се поврзе frontend


  1. Регистрирајте се на Supabase | The Postgres Development Platform и создадете нов проект.
  2. Запишете ги URL-то на проектот и anon клучот од панелот за управување.
  3. Подигнете локален Supabase преку docker-compose:

Код:
git clone https://github.com/supabase/supabase.git

cd supabase

docker-compose up

За да го поврзете frontend со backend, треба да ги користите официјалните SDK. На пример, за веб тоа е @supabase/supabase-js. Еве пример за иницијализација на поврзувањето во JavaScript:

JavaScript:
import { createClient } from '@supabase/supabase-js'


const supabaseUrl = 'https://xyzcompany.supabase.co'

const supabaseKey = 'public-anon-key'

const supabase = createClient(supabaseUrl, supabaseKey)


// Пример за преземање податоци

const { data, error } = await supabase.from('users').select('*')

console.log(data)

За мобилни и серверски апликации постојат аналогни SDK, или може директно да се користи REST API.

Така, за неколку минути добивате готов бекенд со база, автентикација и realtime, и можете да се фокусирате на логиката на frontend.

Главни аналози и алтернативи на Supabase


Може да се издвојат неколку главни алтернативи.

  • Ако барате SaaS-сервис, можете да разгледате Firebase, за кој веќе многу напишав во оваа статија.
  • Ако ви треба лесна, вградлива база со авторизација и слични функции , разгледајте PocketBase. Тоа е чесна open-source алтернатива на Supabase, изградена врз SQLite. Ако проектот ви е мал и не сакате да се потрошите на хостинг за база , оваа опција ќе ви одговара.

Да резимираме

Денес Supabase расте брзо и уверено оди кон статусот на водечки снабдувач на готов бекенд. Сосема може да ја замени Firebase, особено ако ви недостасува слободата да кодирате и не сакате да бидете заробени во туѓи API.

Особена популарност Supabase доби како алатка за поедноставување на vibe-coding развојот. На невронските мрежи им е полесно да работат со готов бекенд.

Иднината на Supabase ветува да биде светла , заедницата расте, функционалноста се шири. Можеби невронските мрежи ќе ја намалат вредноста на готовите API кон базите, но самиот PostgreSQL, авторизацијата и бекапите на базата нема да можат да ги заменат.

До следното читање
 
Последна промена:

gdamjan

poweruser
3 април 2008
4.092
3.558
Скопје
damjan.softver.org.mk
gdamjan's setup  
Processor & Cooler
AMD Ryzen 5 Pro 4650G / Cooler Master Hyper 212 Black
Motherboard
MSI MAG B550m Mortar Wifi
Storage
NVME: 1TB AData XPG SX8200 Pro / 2x 2TB Samsung NVMe 990 Evo Plus / HDD: 2x 2TB Toshiba P300
PSU
Gigabyte G750H
RAM
DDR4 3200MHz Kingston Fury Renegade Kit CL16 (2x32)
Video card
Vega 7 on APU
Case
Bequiet! PureBase 500
Mouse
Logitech MX Master 3
Keyboard
ThinkPad USB Keyboard With TrackPoint (sk-8855) / Keychron Q2
OS
ArchLinux
Екосистем

нијанси со балансирањето
nuance? не е соодветно „нијанси“

обработка на текови
streams?
ова некој LLM ти го пишуваше??


Иначе, можеби не толку познат факт, барем двајца тројца од тимот на Supabase се од Скопје.
 
Последна промена:
  • ми се допаѓа
Реакции: D

stefan

lurker
13 април 2007
683
530
Прилеп
github.com
Ете добро инфо да се знае, јас мака мачам со Firebase, на free plan само 100 конекции дозволува во исто време , Supabase е супериорно подобар и нема лимит на отворени конекции. Screenshot_2026-08-13-00-59-59-164_com.android.chrome.jpg
 
членови онлајн
мислења
теми
членови

Последни теми

Последни огласи

IT.mk/market понуда

Бесплатна достава на 3000 производи
На врв Дно