Průvodci

Co je Postgres? Databáze za mnoha aplikacemi, vysvětleno

Postgres (oficiálně PostgreSQL) je volně dostupná open-source relační databáze: program, který ukládá data aplikace do tabulek s řádky a sloupci, propojuje tyto tabulky a odpovídá na otázky o nich v jazyce SQL. Je známý spolehlivostí, přísností při udržování správných dat a flexibilitou, díky které zvládne cokoli od seznamu registrací po záznamy velké firmy. Mnoho webových aplikací a mnoho služeb, které je hostují, na něm stojí.

Proč je to důležité při tvorbě s AI

Když AI nástroj pro tvorbu aplikací přidá do projektu „databázi“, je dobrá šance, že to bude Postgres. K jeho používání nepotřebujete psát SQL, ale trochu porozumění hodně pomůže:

  • Data můžete popsat tvarem, který databáze potřebuje. „Zákazníci mají mnoho objednávek; každá objednávka má mnoho položek“ se přímo promítne do tabulek.
  • Můžete si vyžádat správnou ochranu. Postgres dokáže sám odmítnout špatná data, například duplicitní e-mail nebo objednávku pro neexistujícího zákazníka, pokud AI nastaví pravidla.
  • Můžete zkontrolovat, co AI udělala. Názvy tabulek, sloupce a vazby se snadno kontrolují v prohlížeči tabulek, i když se do kódu nikdy nepodíváte.

Každodenní příměr: velmi přísná kancelář s archivem

Představte si kancelář s archivem, kde je skříň pro každý druh věcí: jedna pro zákazníky, jedna pro objednávky, jedna pro produkty. Každá karta v zásuvce má stejná natištěná políčka k vyplnění. Každá karta má jedinečné číslo a karta objednávky neopakuje údaje zákazníka; jen říká „zákazník č. 214“ a ukazuje do zásuvky se zákazníky.

Úředník je přísný. Neodloží objednávku, která ukazuje na neexistujícího zákazníka. Nepřijme kartu, pokud je povinné políčko s datem prázdné. A když ho požádáte, aby přesunul peníze z jednoho účtu na druhý, buď provede obě poloviny, nebo nic, nikdy jen jednu.

Tím úředníkem je Postgres. Zásuvky jsou tabulky, natištěná políčka jsou sloupce, každá karta je řádek a odkaz „zákazník č. 214“ je cizí klíč.

Co Postgres dělá dobře

FunkceCo to znamená prostě řečeno
Tabulky a vazbyData žijí v tabulkách, které na sebe ukazují, takže se nic nekopíruje na pěti místech
SQLStandardní jazyk pro dotazy: „všechny nezaplacené objednávky z minulého měsíce, nejnovější první“
Transakce (ACID)Skupina změn se buď celá provede, nebo se neprovede vůbec, i když server uprostřed spadne
Omezení (constraints)Pravidla, která databáze vynucuje sama: povinná pole, jedinečné e-maily, platné vazby mezi tabulkami
IndexyZkratky pro vyhledávání, aby hledání zůstalo rychlé, jak tabulky rostou
JSONBUkládání pružných dat ve stylu dokumentů do sloupce, když se pevná struktura nehodí
Fulltextové vyhledáváníHledání slov v textových polích bez samostatné vyhledávací služby, pro jednoduché případy
RozšířeníDoplňky, například PostGIS pro mapy a polohy, nebo pgvector pro ukládání AI embeddingů
Zabezpečení na úrovni řádkůPravidla uvnitř databáze o tom, které řádky daný uživatel smí vidět

Postgres začal jako výzkumný projekt na University of California v Berkeley v 80. letech a od 90. let se vyvíjí otevřeně globální komunitou. Tato dlouhá historie je důvodem, proč bývá výchozí volbou: je dobře zdokumentovaný, široce podporovaný a každý velký cloudový poskytovatel nabízí jeho spravovanou verzi.

Praktický příklad: proměna tabulky v databázi

Předpokládejme, že vedete malý cateringový podnik a všechno sledujete v jedné tabulce: každý řádek je akce s jménem klienta, telefonem, e-mailem, datem, položkami menu a cenou.

Problémy se objeví rychle. Stejný klient je na šesti řádcích se dvěma různými telefony. Položky menu jsou napsané v jedné buňce jako „canapés x40, salát x2“, takže nemůžete sečíst, kolik canapé jste za měsíc připravili.

V Postgresu se stejné informace promění ve čtyři tabulky:

TabulkaSloupcePoznámky
clientsid, name, phone, emailE-mail musí být jedinečný
eventsid, client_id, date, venue, statusclient_id musí odpovídat existujícímu klientovi
menu_itemsid, name, unit_priceJeden řádek na každé jídlo
event_itemsevent_id, menu_item_id, quantityPropojuje akce s jídly, včetně množství

Telefonní číslo klienta je teď na jednom místě. „Kolik canapé jsme v březnu připravili?“ je jediný SQL dotaz. A když zaznamenáte novou akci s položkami, transakce zajistí, že nikdy nevznikne akce, které se uložila jen polovina položek.

Tento krok lidé často přeskočí, když AI požádají, aby „z mé tabulky udělala aplikaci“. Průvodce, jak proměnit tabulku v aplikaci jde dál.

Klíčové pojmy

  • Tabulka, řádek, sloupec: druh věci, jeden její výskyt, jedna informace o ní.
  • Primární klíč: jedinečné ID každého řádku, obvykle id.
  • Cizí klíč: sloupec, který ukazuje na řádek v jiné tabulce, například client_id.
  • Schéma: návrh všech vašich tabulek a sloupců.
  • Migrace: uložená a opakovatelná změna schématu, například „přidej sloupec venue do events“.
  • Dotaz: otázka nebo příkaz napsaný v SQL.
  • Connection string: adresa a heslo, pomocí kterých backend dosáhne k databázi. Je to tajný údaj — viz proměnné prostředí a tajné údaje.
  • Spravovaný Postgres: služba, která za vás databázi provozuje, zálohuje a aktualizuje.

Pro běžné operace, které každá aplikace nad těmito tabulkami provádí — vytvořit, číst, upravit, smazat — viz co znamená CRUD.

Časté chyby a omyly

  • Jedna obrovská tabulka. Kopírování sloupců z tabulky tak, jak jsou, vede ke stejným problémům s duplicitou. Věci, které se opakují, dejte do vlastních tabulek.
  • Ukládání seznamů do jednoho textového pole. „canapés x40, salát x2“ v jediném sloupci nejde správně spočítat ani prohledat. Použijte propojovací tabulku.
  • Žádná omezení. Bez pravidla „e-mail musí být jedinečný“ nebo „každá akce potřebuje klienta“ se špatná data tiše uloží a vyplavou na povrch až po měsících.
  • Ruční změny databáze v produkci. Změny schématu si vyžádejte jako migrace, aby byly zaznamenané a šly zopakovat.
  • Nechat prohlížeč mluvit s databází přímo. Frontend má jít přes backend, který kontroluje oprávnění. Heslo k databázi nikdy nepatří do kódu stránky.
  • „Postgres je jen pro velké firmy.“ Běží stejně dobře pro seznam čekatelů o 50 řádcích a s růstem z něj nemusíte odcházet.
  • Předpoklad, že databáze je záloha. Ukládá data; automaticky vás nechrání před jejich smazáním. Ověřte, jaké zálohy vám hosting poskytuje.

Co požádat svůj AI nástroj

  • „Ukládej [věci] do databáze. Tabulky: … s těmito poli: … Propoj každou [objednávku] se [zákazníkem].“
  • „U zákazníků dej e-mail jako jedinečný. Tato pole nech povinná. Neumožni objednávku bez zákazníka.“
  • „Každou změnu schématu dělej jako migraci.“
  • „Přidej indexy pro vyhledávání, které děláme nejčastěji: objednávky podle zákazníka a podle data.“
  • „Veškerý přístup k databázi jde přes server. Connection string drž v proměnných prostředí.“

Pokud o databázi vůbec nevíte, začněte s co je databáze a pak se sem vraťte. Aplikace typu full-stack ukazuje, kde databáze sedí vedle frontendu a backendu.

Postgres v Mythexu

Mythex dává každému projektu, který ji potřebuje, vlastní dedikovanou databázi Postgres. Nic nekonfigurujete: napíšete do chatu (například „ukládej e-maily čekatelů do databáze“) nebo použijete příkaz /database, Mythex databázi připojí, předá její údaje vaší aplikaci a může za vás vytvořit tabulky. Databáze publikované aplikace po pěti minutách nečinnosti usne a při dalším požadavku se probudí. Platíte za čas, kdy byla skutečně vzhůru, z téhož zůstatku kreditů jako za tvorbu. Podrobnosti jsou v dokumentaci k databázi a šablony dashboardů jsou dobrým místem, kde vidět aplikace napojené na data.

Otázky

Je Postgres totéž co PostgreSQL?

Ano. PostgreSQL je oficiální název a Postgres je obvyklá zkrácená podoba; oba označují tutéž open-source relační databázi.

Je Postgres zdarma?

Ano. PostgreSQL je open source pod volnou licencí PostgreSQL License, takže ho můžete používat zdarma, i v komerčních produktech. Platíte jen za servery nebo spravovanou službu, na které běží.

Jaký je rozdíl mezi Postgresem a MySQL?

Obě jsou volně dostupné relační SQL databáze a obě jsou vhodné pro většinu aplikací. Postgres vyniká přísnou integritou dat, bohatými datovými typy jako JSONB a poli a velkým ekosystémem rozšíření; MySQL je známý jednoduchostí a dlouhou historií ve webovém hostingu.

Je Postgres vhodný pro malou aplikaci?

Ano. Dobře funguje pro jednoduchý seznam čekatelů i pro velké produkční systémy, takže s růstem aplikace nebudete muset měnit databázi. Spravované služby usnadňují provoz bez databázového administrátora.

Mythex · Pricing · Vytvořte cokoli s AI · Šablony webů a aplikací · Mythex v porovnání · Slovník tvorby aplikací s AI · Bezplatné nástroje pro tvorbu aplikací s AI · English

English አማርኛ العربية Български বাংলা Bosanski Català 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 简体中文 繁體中文(香港) 繁體中文(台灣)