Vodiči

Što je Postgres? Baza podataka iza mnogih aplikacija, objašnjeno

Postgres (službeno PostgreSQL) je besplatna, otvorenog koda relacijska baza podataka: program koji pohranjuje podatke aplikacije u tablice redaka i stupaca, povezuje te tablice i odgovara na pitanja o njima jezikom zvanim SQL. Poznat je po pouzdanosti, strogoći u održavanju točnosti podataka i dovoljnoj fleksibilnosti da obradi sve od liste prijava do evidencije velike tvrtke. Mnoge web aplikacije, kao i mnogi servisi koji ih hostaju, izgrađeni su na njemu.

Zašto je važan kad gradite s AI-jem

Kad AI alat za izradu aplikacija u projekt doda „bazu podataka”, velika je vjerojatnost da je to Postgres. Ne morate pisati SQL da biste ga koristili, ali malo razumijevanja puno pomaže:

  • Podatke možete opisati u obliku koji baza treba. „Kupci imaju mnogo narudžbi; svaka narudžba ima mnogo stavki” izravno se prevodi u tablice.
  • Možete tražiti odgovarajuću zaštitu. Postgres može sam odbiti loše podatke, poput duplog e-maila ili narudžbe za kupca koji ne postoji, ako AI postavi pravila.
  • Možete pročitati što je AI napravio. Nazivi tablica, stupaca i veze lako se provjeravaju u alatu za pregled tablica, čak i ako nikad ne dirate kod.

Svakodnevna analogija: vrlo stroga arhiva

Zamislite arhivu s ormarom za svaku vrstu stvari: jedan za kupce, jedan za narudžbe, jedan za proizvode. Svaka kartica u ladici ima iste otisnute okvire koje treba popuniti. Svaka kartica ima jedinstveni broj, a kartica narudžbe ne ponavlja podatke kupca, nego samo kaže „kupac #214”, pokazujući na ladicu kupaca.

Službenik je strog. Neće arhivirati narudžbu koja pokazuje 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, obavit će obje polovice ili nijednu, nikad samo jednu.

Taj službenik je Postgres. Ladice su tablice, otisnuti okviri su stupci, svaka kartica je redak, a poveznica „kupac #214” je strani ključ (foreign key).

Što je Postgres dobar u

ZnačajkaŠto znači običnim riječima
Tablice i vezePodaci žive u tablicama 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)Skupina promjena se ili cijela izvrši ili se nijedna ne izvrši, čak i ako server padne usred posla
Ograničenja (constraints)Pravila koja baza sama provodi: obavezna polja, jedinstvene e-adrese, ispravne veze među tablicama
IndeksiPrečaci za pretraživanje, da pretrage ostanu brze kako tablice rastu
JSONBPohrana fleksibilnih podataka nalik dokumentima u stupcu kad fiksna struktura ne odgovara
Pretraga cijelog tekstaPretraživanje riječi u tekstualnim poljima bez zasebnog servisa za pretragu, za jednostavne slučajeve
ProširenjaDodaci poput PostGIS-a za karte i lokacije ili pgvectora za pohranu AI embeddinga
Sigurnost na razini retkaPravila unutar baze o tome koje retke određeni korisnik smije vidjeti

Postgres je nastao kao istraživački projekt na Sveučilištu Kalifornije u Berkeleyju osamdesetih godina i od devedesetih ga razvija otvorena globalna zajednica. Ta duga povijest razlog je zašto je često zadani izbor: dobro je dokumentiran, široko podržan i svaki veći cloud pružatelj nudi upravljanu verziju.

Radni primjer: pretvaranje tablice u tablice baze

Recimo da vodite mali catering posao i sve pratite u jednoj tablici: svaki redak je događaj, s imenom klijenta, telefonom i e-adresom, datumom, stavkama jelovnika i cijenom.

Problemi se brzo pojave. Isti klijent pojavljuje se u šest redaka s dva različita broja telefona. Stavke jelovnika upisane su 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 tablice:

TablicaStupciNapomene
clientsid, name, phone, emailE-adresa mora biti jedinstvena
eventsid, client_id, date, venue, statusclient_id mora odgovarati stvarnom klijentu
menu_itemsid, name, unit_priceJedan redak po jelu
event_itemsevent_id, menu_item_id, quantityPovezuje događaje s jelima, s količinom

Sada broj telefona klijenta živi na jednom mjestu. „Koliko smo canapéa napravili u ožujku?” je jedan SQL upit. A kad zabilježite novi događaj sa stavkama, transakcija osigurava da nikad ne ostane događaj s pola spremljenih stavki.

Ovaj korak ljudi često preskoče kad od AI-ja traže da „od moje tablice napravi aplikaciju”. Vodič za pretvaranje tablice u aplikaciju ide dalje.

Ključni pojmovi

  • Tablica, redak, stupac: vrsta stvari, jedna pojava te vrste, jedna informacija o njoj.
  • Primarni ključ: jedinstveni ID svakog retka, obično id.
  • Strani ključ: stupac koji pokazuje na redak u drugoj tablici, poput client_id.
  • Shema: dizajn svih vaših tablica i stupaca.
  • Migracija: spremljena, ponovljiva promjena sheme, poput „dodaj stupac venue u events”.
  • Upit (query): pitanje ili naredba napisana u SQL-u.
  • Connection string: adresa i lozinka kojima vaš backend dolazi do baze. To je tajna, pogledajte varijable okruženja i tajne.
  • Upravljani Postgres: usluga koja pokreće, sigurnosno kopira i ažurira Postgres umjesto vas.

Za svakodnevne operacije koje svaka aplikacija izvodi nad tim tablicama, stvaranje, čitanje, ažuriranje i brisanje, pogledajte što znači CRUD.

Česte greške i zablude

  • Jedna ogromna tablica. Kopiranje tablice iz tabele stupac po stupac vodi do istih problema s dupliciranjem. Stvari koje se ponavljaju odvojite u vlastite tablice.
  • Pohranjivanje popisa u jedno tekstualno polje. „canapés x40, salad x2” u jednom stupcu ne može se pravilno prebrojati ili pretraživati. Koristite tablicu za povezivanje.
  • Bez ograničenja. Bez pravila „e-adresa mora biti jedinstvena” ili „svaki događaj treba klijenta”, loši podaci tiho ulaze i iskoče mjesecima kasnije.
  • Ručna izmjena baze u produkciji. Promjene sheme tražite kao migracije, da se promjena zabilježi i može ponoviti.
  • Dopuštanje pregledniku da izravno razgovara s bazom. Frontend treba ići preko vašeg backenda, koji provjerava dopuštenja. Lozinka za bazu nikad ne pripada kodu stranice.
  • „Postgres je samo za velike tvrtke.” Jednako dobro radi za listu čekanja od 50 redaka, a nećete ga morati napustiti kako rastete.
  • Pretpostavka da je baza sigurnosna kopija. Baza pohranjuje podatke; ne štiti vas automatski od njihova brisanja. Provjerite koje sigurnosne kopije daje vaš host.

Što tražiti od AI alata za izradu

  • „Spremaj [stvari] u bazu podataka. Tablice: … s ovim poljima: … Poveži svaku [narudžbu] s [kupcem].”
  • „Neka e-adresa kupca bude jedinstvena. Ova polja neka budu obavezna. Ne dopuštaj narudžbu bez kupca.”
  • „Za svaku promjenu sheme koristi migracije.”
  • „Dodaj indekse za pretrage koje najčešće radimo: narudžbe po kupcu i po datumu.”
  • „Sav pristup bazi ide preko servera. Connection string drži u varijablama okruženja.”

Ako uopće niste upoznati s idejom baze podataka, počnite s što je baza podataka, pa se vratite ovdje. Full-stack aplikacija pokazuje gdje baza stoji uz frontend i backend.

Postgres na Mythexu

Mythex svakom projektu kojem treba baza daje vlastitu Postgres bazu podataka. Ne morate je konfigurirati: zatražite je u chatu („spremi emailove s liste čekanja u bazu”) ili upotrijebite naredbu /database, a Mythex je priključi, ubaci detalje veze u vašu aplikaciju i može kreirati tablice umjesto vas. Objavljena aplikacija uspava svoju bazu nakon pet minuta mirovanja i probudi je pri sljedećem zahtjevu, a naplaćuje se vrijeme u kojem je zaista bila budna, iz istog stanja kredita kao i izrada. Detalji su u dokumentaciji o bazi podataka, a predlošci nadzornih ploča dobro su mjesto da vidite aplikacije s podacima.

Pitanja

Je li Postgres isto što i PostgreSQL?

Da. PostgreSQL je službeni naziv, a Postgres je uobičajeni kratki naziv; oba se odnose na istu relacijsku bazu podataka otvorenog koda.

Je li Postgres besplatan?

Da. PostgreSQL je otvorenog koda pod permisivnom PostgreSQL licencom, pa ga možete koristiti besplatno, 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 relacijske SQL baze i oba su dobra za većinu aplikacija. Postgres je poznat po strogom očuvanju integriteta podataka, bogatim tipovima podataka kao što su JSONB i nizovi te velikom ekosustavu proširenja; MySQL je poznat po jednostavnosti i dugoj povijesti u web hostingu.

Je li Postgres dobar za malu aplikaciju?

Da. Dobro radi za listu čekanja s jednom tablicom, ali i za velike produkcijske sustave, pa se ne morate mijenjati bazu kako aplikacija raste. Upravljane usluge olakšavaju rad bez administratora baze podataka.

Mythex · Pricing · Izradite bilo što uz AI · Predlošci za web stranice i aplikacije · Mythex u usporedbi · Rječnik izrade aplikacija uz AI · Besplatni alati za izradu aplikacija uz AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी 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 简体中文 繁體中文(香港) 繁體中文(台灣)