
Supabase või Firebase: andmemudel võib maksta rohkem kui kuutasu

Supabase’i ja Firebase’i vahel otsustades tuleb võrrelda rakenduse andmemudelit ja kasutusmustrit, mitte ainult paketi hinda. Omavahel seotud klientide, projektide ja arvete puhul sobib Supabase’i Postgresi relatsiooniline mudel. Kui rakendus loeb väheseid iseseisvaid dokumente, võib Firebase’i Cloud Firestore alustada väiksema kuluga.
Lugemisrohke kataloog või reaalajas uuenev vaade võib järjestuse ümber pöörata. Firestore’is mõjutab arvet ühe toiminguga loetud dokumentide arv; Supabase’is loevad projekti arvutusressurss, väljuv liiklus ja kuulajatele edastatud sõnumid. Kolm allpool toodud töökoormust on tingimuslikud arvutused, mitte mõõdetud rakenduste arved.
Mille järgi teenused arveldavad?
Supabase’i hinnakirja järgi saab iga projekt oma Postgresi instantsi. Pro-pakett algab 25 dollarist kuus ja sisaldab 10 dollarit arvutuskrediiti, millest piisab ühe Micro-instantsi jaoks; arvutusressurssi arveldatakse tunni kaupa. Pakett sisaldab projekti kohta 8 GB andmebaasiruumi, 250 GB väljuvat liiklust ja kuni 500 samaaegset Realtime’i ühendust. Tasuta paketis on andmebaasi piir 500 MB, väljuva liikluse maht 5 GB ning projekt peatatakse pärast nädalast tegevusetust.
Cloud Firestore’i arveldusreeglid annavad ühele tasuta andmebaasile päevas 50 000 dokumendilugemist ja 20 000 kirjutamist ning kuus 10 GiB tasuta väljuvat andmeedastust. Päevane maht lähtestub Vaikse ookeani aja järgi, nii et väiksema koormusega päev ei tasakaalusta järgmise päeva ülejääki. Tasuliste toimingute kõrval tuleb arvestada salvestust ja andmeedastust; mõne päringu puhul lisanduvad indeksikirjete lugemised.
Järgnevates näidetes kasutatakse Firebase’i ametliku näidisarvutuse tariife Põhja-Ameerika mitme piirkonna asukohas: pärast tasuta päevast mahtu 0,06 dollarit 100 000 lugemise ja 0,18 dollarit 100 000 kirjutamise eest. Need ühikuhinnad annavad läbipaistva võrdlusaluse, kuid Eesti tiimi tegelik hind sõltub valitud andmebaasipiirkonnast. Kõik kolm näidet katavad 30 päeva ning jätavad eraldi nimetatud kulud kogusummast välja.
Relatsiooniline SaaS: seosed muudavad päringut
Oletame väikest SaaS-rakendust, mille avavaade näitab kliendi kontot, projekte, liikmeid ja arveid. Postgreses saab neid kirjeid siduda võõrvõtmetega ning koostada vaate seotud tabelitest. Firestore’is sõltub loetavate dokumentide arv sellest, kas vajalik teave asub eraldi dokumentides või on sagedasti koos kasutatavad väljad koondatud.
Kui vaade avatakse tingimuslikult 1000 korda päevas ja iga avamine loeb 16 Firestore’i dokumenti, tekib 16 000 lugemist päevas. Lisame 4000 kirjutamist päevas. Mõlemad kogused jäävad eespool nimetatud tasuta päevamahu sisse, seega on näite Firestore’i toimingukulu null; ühe Micro-instantsiga Supabase’i Pro lähtehind on 25 dollarit kuus. See võrdleb ainult nimetatud toiminguid ja Pro-paketti: Supabase’i tasuta pakett võib samuti sobida, kui selle mahu- ja peatamistingimused rakendusele sobivad.
Raha kõrval mõjutab valikut andmete muutmine. Kui sama kliendi nimi on kopeeritud mitmesse Firestore’i dokumenti, võib avavaade vajada vähem lugemisi, kuid nime muutmisel tuleb koopiad kooskõlas hoida. Ühise Postgresi kirje muutmine väldib seda kopeerimist; keerukad liitmised võivad siiski vajada sobivaid indekseid ja Micro-instantsist suuremat arvutusressurssi. Seetõttu ei tähenda näite tasuta Firestore’i toimingud, et sama mudel jääb odavaimaks ka rohkemate vaadete ja muudatuste korral.
Lugemisrohke kataloog: ühe otsingu dokumentide arv

Kataloogi puhul võib dokumendilugemiste kulu ületada Supabase’i Pro lähtehinna. Oletame 100 000 otsingut päevas, millest igaüks tagastab 20 eraldi Firestore’i dokumenti. See teeb 2 miljonit lugemist päevas. Kui muud tasulised lugemised puuduvad, jääb pärast tasuta päevamahtu tasuliseks 1,95 miljonit lugemist päevas ehk 58,5 miljonit 30 päeva jooksul. Eespool toodud näitetariifiga on nende lugemiste kulu 35,10 dollarit.
Supabase’i 25-dollarine Pro lähtehind on sellest väiksem ainult eeldusel, et päringud mahuvad Micro-instantsi jõudlusse ja muud kasutusmahud paketi piiridesse. Näide ei arvesta kummagi teenuse salvestust ega väljuvat liiklust. Kui üks tagastatud dokument annab vastuses keskmiselt 1 kB andmeid, liiguks 30 päeva jooksul ligikaudu 60 GB andmeid. Tegelik edastus sõltub dokumendi suurusest, vastuse ülesehitusest ja vahemälu kasutusest; Firestore’i väljuva liikluse tasuta maht oleks selle eelduse korral ületatud.
Kataloogi andmemudel võib tulemust märgatavalt muuta. Kui otsing tagastab ainult lühikesed tulemused ning üksiktoote üksikasjad laaditakse eraldi, väheneb esialgse vastuse maht ja võib väheneda ka loetavate dokumentide arv. Lehekülgede kaupa laadimine jätab avamata tulemused lugemata. Teisalt võivad koondatud otsingudokumendid vajada lisakirjutamisi iga kord, kui tooteandmed muutuvad. Arvutuse määrab seega päringuga tegelikult tagastatav hulk, mitte kataloogi kogusuurus üksi.
Reaalajavaade: sama muudatus jõuab mitme kuulajani

Reaalajas uueneva vaate puhul tuleb esmane laadimine eristada hilisematest muudatustest. Firestore arvestab kuulaja tulemustesse lisatud või seal uuendatud dokumendi lugemisena; ühenduse katkemise järel võib uuesti liitumine tekitada uue päringu lugemised. Supabase’i reaalajasõnumite arvestuses loetakse andmebaasimuudatus üheks sõnumiks iga sündmust kuulava kliendi kohta. Pro-pakett sisaldab 5 miljonit sõnumit kuus ja ülejääk maksab 2,50 dollarit iga alanud miljonilise paketi eest.
Tingimuslikult avab päevas vaate 20 000 kasutajat. Igaühele laaditakse algul 30 dokumenti ja tema avatud vaates uuendatakse päeva jooksul 20 dokumenti. Firestore’i jaoks on see 600 000 esmast lugemist ning 400 000 uuenduse lugemist päevas. Pärast tasuta päevamahtu on tasulisi lugemisi 950 000 päevas; 30 päeva lugemiskulu on näitetariifiga 17,10 dollarit. Eeldus on, et ühendus ei katke, indeksilugemisi ei lisandu ja kirjutamised jäävad tasuta päevamahu sisse.
Kui Supabase edastab samad 20 muudatust igale kasutajale Postgresi muudatuste sõnumitena, tekib 30 päevaga 12 miljonit kohale toimetatud sõnumit. Pro-paketi mahust üle jäävad 7 miljonit sõnumit maksavad 17,50 dollarit ning koos 25-dollarise lähtepaketiga oleks summa 42,50 dollarit. See eeldab, et Micro-instantsist piisab ja samaaegsete ühenduste arv jääb paketi piiridesse: 20 000 päevast kasutajat ei tähenda automaatselt sama palju ühel ajal ühendatud kliente. Supabase’i esmane andmepäring koormab samuti andmebaasi, kuigi seda ei arveldata Firestore’i dokumendilugemisena.
Viivitus on hinnast eraldi küsimus
Atheeriumi võrdlustabelis on seitsme töövoo kolmekuulise võrdluse API viivitus Supabase’il 22 ms ja Firebase’il 21 ms. Avaldatud ülevaade ei täpsusta päringuid, piirkondi, vastuste suurust ega viivituse jaotust. Neid arve ei saa seetõttu kasutada ülaltoodud töökoormuste vastamisaja või arve prognoosina.
Rakenduse kasutajale loeb kogu vaate valmimise aeg: relatsioonilises SaaS-is koos seotud kirjetega, kataloogis koos soovitud tulemuste hulgaga ning reaalajavaates eraldi esmase laadimise ja uuendustega. Postgresi liitmispäring, Firestore’i mitu dokumendilugemist ja kliendi vahemälu võivad anda erineva tulemuse ka siis, kui üksiku API-päringu viivitus paistab sarnane. Valiku hinnapoolt näitavad töökoormuse ühikud; jõudlus vajab sama kasutustoimingu mõõtmist mõlemas lahenduses.
Loe ka:
Seotud artiklid


PostgreSQLi varukoopia: pg_dump üksi ei anna punktiaja taastamist

Plausible või Matomo: 2,9 kB skript vastamisi 225 kB-ga

Notion või Obsidian: võrguühenduseta töö lõpeb eri piiranguga

Replit või Lovable: odavam kuutasu ei näita valmis rakenduse kulu

Vercel või Netlify: külmkäivitus võib vastuse kolmekordistada
Telli meie uudiskiri
Saa värskeimad Web3, AI ja krüptouudised otse oma postkasti.