Vodiči

Šta je Postgres? Baza podataka iza mnogih aplikacija, objašnjena

Postgres (zvanično PostgreSQL) je besplatna, open source relaciona baza podataka: program koji čuva podatke aplikacije u tabelama redova i kolona, povezuje te tabele i odgovara na pitanja o njima pomoću jezika zvanog SQL. Poznat je po pouzdanosti, strogosti u očuvanju tačnih podataka i dovoljnoj fleksibilnosti da obradi sve, od liste za prijave do evidencije velike kompanije. Mnoge web aplikacije, kao i mnoge usluge koje ih hostuju, izgrađene su na njemu.

Zašto je važan kada gradite uz AI

Kada AI graditelj aplikacija u vaš projekat doda „bazu podataka”, velika je šansa da je to Postgres. Ne morate pisati SQL da biste ga koristili, ali malo razumijevanja mnogo pomaže:

  • Podatke možete opisati onako kako baza treba. „Kupci imaju mnogo narudžbi; svaka narudžba ima mnogo stavki” direktno se prevodi u tabele.
  • Možete tražiti prave zaštite. Postgres sam može odbiti loše podatke — dupliranu e-poštu ili narudžbu za kupca koji ne postoji — ako AI postavi pravila.
  • Možete pročitati šta je AI uradio. Nazivi tabela, kolone i veze lako se provjere u pregledniku tabela, čak i ako nikada ne dirate kod.

Svakodnevna analogija: vrlo stroga kancelarija za arhiviranje

Zamislite kancelariju za arhiviranje s ormarom za svaku vrstu stvari — jedan za kupce, jedan za narudžbe, jedan za proizvode. Svaka kartica u fiokama ima iste štampane rubrike za popunjavanje. Svaka kartica ima jedinstven broj, a kartica narudžbe ne ponavlja podatke kupca; samo kaže „kupac #214”, što upućuje na fioku kupaca.

Službenik je strog. Neće arhivirati narudžbu koja upućuje na kupca koji ne postoji. Neće prihvatiti karticu s praznim obaveznim poljem. A ako ga zamolite da prebaci novac s jednog računa na drugi, uradiće obje strane ili nijednu — nikada samo jednu.

Taj službenik je Postgres. Fioke su tabele, štampane rubrike su kolone, svaka kartica je red, a veza „kupac #214” je strani ključ (foreign key).

Šta je Postgres dobar u tome

FunkcijaŠta znači jednostavnim riječima
Tabele i vezePodaci žive u tabelama koje pokazuju jedna na drugu, pa se ništa ne kopira na pet mjesta
SQLStandardni jezik za postavljanje pitanja: „sve neplaćene narudžbe iz prošlog mjeseca, najnovije prve”
Transakcije (ACID)Grupa promjena ili se sve desi ili se ništa ne desi, čak i ako server padne na pola puta
Ograničenja (constraints)Pravila koja baza sama sprovodi: obavezna polja, jedinstvene adrese e-pošte, ispravne veze između tabela
IndeksiPrečice za pretragu da pretrage ostanu brze kako tabele rastu
JSONBČuvanje fleksibilnih podataka u stilu dokumenta u koloni kada fiksna struktura ne odgovara
Pretraga punog tekstaPretraga riječi u tekstualnim poljima bez zasebnog servisa za pretragu, za jednostavne slučajeve
ProširenjaDodaci, poput PostGIS-a za mape i lokacije ili pgvector-a za čuvanje AI embeddinga
Sigurnost na nivou redaPravila unutar baze o tome koje redove određeni korisnik smije vidjeti

Postgres je počeo kao istraživački projekat na Univerzitetu Kalifornije u Berkeleyu 1980-ih i od 1990-ih ga otvoreno razvija globalna zajednica. Ta duga historija je razlog zašto je često podrazumijevani izbor: dobro je dokumentovan, široko podržan, a svaki veliki cloud provajder nudi upravljanu verziju.

Primjer: pretvaranje tabele u tabele baze

Recimo da vodite mali catering biznes i sve pratite u jednoj tabeli: svaki red je događaj, s imenom klijenta, telefonom i e-poštom, datumom, stavkama menija i cijenom.

Problemi se brzo pojavljuju. Isti klijent se pojavljuje u šest redova s dva različita broja telefona. Stavke menija su upisane u jednu ćeliju kao „canapés x40, salad x2”, pa ne možete zbrojiti koliko ste canapéa napravili ovog mjeseca.

U Postgresu, iste informacije postaju četiri tabele:

TabelaKoloneNapomene
clientsid, name, phone, emailE-pošta mora biti jedinstvena
eventsid, client_id, date, venue, statusclient_id mora odgovarati stvarnom klijentu
menu_itemsid, name, unit_priceJedan red po jelu
event_itemsevent_id, menu_item_id, quantityPovezuje događaje s jelima, uz količinu

Sada broj telefona klijenta živi na jednom mjestu. „Koliko canapéa smo napravili u martu?” je jedan SQL upit. A kada zabilježite novi događaj sa stavkama, transakcija osigurava da nikada nemate događaj koji je sačuvan s polovinom stavki.

Ovo je korak koji ljudi preskoče kada od AI-ja traže da „napravi aplikaciju od moje tabele”. Vodič o pretvaranju tabele u aplikaciju ide dalje.

Ključni pojmovi

  • Tabela, red, kolona: vrsta stvari, jedan primjerak te stvari, jedna informacija o njoj.
  • Primarni ključ: jedinstveni ID svakog reda, obično id.
  • Strani ključ: kolona koja pokazuje na red u drugoj tabeli, poput client_id.
  • Šema: dizajn svih vaših tabela i kolona.
  • Migracija: sačuvana, ponovljiva promjena šeme, poput „dodaj kolonu venue u events”.
  • Upit (query): pitanje ili instrukcija napisana u SQL-u.
  • Connection string: adresa i lozinka koju backend koristi da dođe do baze. To je tajna — pogledajte varijable okruženja i tajne.
  • Upravljani Postgres: usluga koja pokreće, pravi rezervne kopije i ažurira Postgres umjesto vas.

Za svakodnevne operacije koje svaka aplikacija radi nad tim tabelama — kreiranje, čitanje, ažuriranje, brisanje — pogledajte šta znači CRUD.

Česte greške i zablude

  • Jedna ogromna tabela. Kopiranje tabele kolonu po kolonu vodi do istih problema s dupliranjem. Razdvojite stvari koje se ponavljaju u zasebne tabele.
  • Čuvanje lista u jednom tekstualnom polju. „canapés x40, salad x2” u jednoj koloni ne može se pravilno prebrojati ili pretraživati. Koristite tabelu za povezivanje.
  • Nema ograničenja. Bez pravila „e-pošta mora biti jedinstvena” ili „svaki događaj treba klijenta”, loši podaci se tiho uvuku i izađu na vidjelo mjesecima kasnije.
  • Ručno mijenjanje baze u produkciji. Tražite promjene šeme kao migracije, da promjena bude zabilježena i da se može ponoviti.
  • Dozvoljavanje pretraživaču da direktno priča s bazom. Frontend treba ići kroz vaš backend, koji provjerava dozvole. Lozinka baze nikada ne pripada kodu stranice.
  • „Postgres je samo za velike kompanije.” Jednako dobro radi za listu čekanja od 50 redova, a nećete morati da se selite s njega kako rastete.
  • Pretpostavka da je baza rezervna kopija. Ona čuva podatke; ne štiti vas automatski od brisanja. Provjerite koje rezervne kopije vaš hosting nudi.

Šta tražiti od AI graditelja

  • „Sačuvaj [stvari] u bazi podataka. Tabele: … s ovim poljima: … Poveži svaku [narudžbu] s [kupcem].”
  • „Neka e-pošta kupca bude jedinstvena. Ova polja neka budu obavezna. Ne dozvoli narudžbu bez kupca.”
  • „Koristi migracije za svaku promjenu šeme.”
  • „Dodaj indekse za pretrage koje najčešće radimo: narudžbe po kupcu i po datumu.”
  • „Sav pristup bazi ide kroz server. Čuvaj connection string u varijablama okruženja.”

Ako uopšte niste upoznati s idejom baze podataka, počnite s šta je baza podataka, pa se vratite ovdje. Aplikacija s punim stekom pokazuje gdje baza stoji pored frontenda i backenda.

Postgres na Mythexu

Mythex svakom projektu kojem treba baza daje sopstvenu namjensku Postgres bazu. Ne podešavate je: zatražite u chatu („sačuvaj emailove liste čekanja u bazu”) ili upotrijebite komandu /database, a Mythex je priključuje, ubacuje detalje o vezi u vašu aplikaciju i može napraviti tabele umjesto vas. Baza objavljene aplikacije uspava se nakon pet minuta mirovanja i probudi na sljedeći zahtjev, a naplaćuje se vrijeme u kojem je bila budna, iz istog saldo kredita kao i pravljenje. Detalji su u dokumentaciji o bazi, a šabloni kontrolnih tabli su dobro mjesto da vidite aplikacije s podacima.

Pitanja

Je li Postgres isto što i PostgreSQL?

Da. PostgreSQL je zvanični naziv, a Postgres je uobičajeni skraćeni naziv; oba se odnose na istu open source relacionu bazu podataka.

Je li Postgres besplatan?

Da. PostgreSQL je open source pod permisivnom PostgreSQL licencom, pa ga možete besplatno koristiti, uključujući u komercijalnim proizvodima. Plaćate samo servere ili upravljanu uslugu koja ga pokreće.

Koja je razlika između Postgresa i MySQL-a?

Oba su besplatne, relacione SQL baze i oba su dobra za većinu aplikacija. Postgres je poznat po strogom integritetu podataka, bogatim tipovima podataka kao što su JSONB i nizovi, te velikom ekosistemu proširenja; MySQL je poznat po jednostavnosti i dugoj istoriji u web hostingu.

Je li Postgres dobar za malu aplikaciju?

Da. Radi dobro i za jednostavnu listu čekanja s jednom tabelom i za velike produkcijske sisteme, pa nećete morati mijenjati bazu kako aplikacija raste. Upravljane usluge olakšavaju rad bez administratora baze.

Mythex · Pricing · Izradite bilo šta uz AI · Šabloni za web stranice i aplikacije · Mythex u poređenju · Rječnik izrade aplikacija uz AI · Besplatni alati za izradu aplikacija uz AI · English

English አማርኛ العربية Български বাংলা Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)