Ръководства

Какво е Postgres? Базата данни зад много приложения, обяснена

Postgres (официално PostgreSQL) е безплатна релационна база данни с отворен код: програма, която съхранява данните на приложението в таблици от редове и колони, свързва таблиците помежду им и отговаря на въпроси за тях на език, наречен SQL. Известна е с надеждността си, със строгостта си при поддържането на данните верни и с гъвкавостта си да се справя с всичко – от списък с регистрации до записите на голяма компания. Много уеб приложения и много от услугите, които ги хостват, са изградени върху нея.

Защо е важен, когато създаваш с AI

Когато AI инструмент за създаване на приложения добави "база данни" към проекта ти, има голяма вероятност тя да е Postgres. Не е нужно да пишеш SQL, за да я използваш, но малко разбиране помага много:

  • Можеш да опишеш данните във формата, от който базата се нуждае. "Клиентите имат много поръчки; всяка поръчка има много артикули" директно се превръща в таблици.
  • Можеш да поискаш правилните защити. Postgres може сам да отхвърля лоши данни – дублиран имейл, поръчка за клиент, който не съществува – ако AI настрои правилата.
  • Можеш да прочетеш какво е направил AI. Имената на таблиците, колоните и връзките са лесни за проверка в преглед на таблици, дори ако никога не докосваш кода.

Ежедневна аналогия: много строг архив

Представи си архивна служба с шкаф за всеки вид нещо – един за клиенти, един за поръчки, един за продукти. Всяка карта в чекмедже има едни и същи печатни полета за попълване. Всяка карта има уникален номер, а картата на поръчката не повтаря данните на клиента; тя просто казва "клиент №214" и сочи към шкафа с клиентите.

Служителят е строг. Няма да архивира поръчка, която сочи към клиент, който не съществува. Няма да приеме карта с празно поле за дата, ако то е задължително. А ако го помолиш да прехвърли пари от една карта на сметка към друга, той или прави и двете половини, или нито една – никога само една.

Този служител е Postgres. Чекмеджетата са таблици, печатните полета са колони, всяка карта е ред, а връзката "клиент №214" е външен ключ (foreign key).

Какво Postgres умее добре

ФункцияКакво означава с прости думи
Таблици и връзкиДанните живеят в таблици, които сочат една към друга, така че нищо не се копира на пет места
SQLСтандартен език за задаване на въпроси: "всички неплатени поръчки от миналия месец, най-новите първи"
Транзакции (ACID)Група промени или се случват всичките, или не се случва нито една, дори ако сървърът се срине по средата
Ограничения (constraints)Правила, които базата налага сама: задължителни полета, уникални имейли, валидни връзки между таблиците
ИндексиПряк път за търсене, така че търсенията остават бързи, когато таблиците растат
JSONBСъхранявай гъвкави данни във формат на документ в колона, когато фиксираната структура не пасва
Пълнотекстово търсенеТърсене на думи в текстови полета без отделна услуга за търсене, за прости случаи
РазширенияДобавки като PostGIS за карти и местоположения или pgvector за съхранение на AI embeddings
Сигурност на ниво ред (row-level security)Правила вътре в базата за това кои редове може да вижда даден потребител

Postgres започва като изследователски проект в Калифорнийския университет в Бъркли през 80-те години и от 90-те се развива открито от глобална общност. Тази дълга история е причината да е често избор по подразбиране: добре документирана е, широко поддържана и всеки голям облачен доставчик предлага управлявана версия.

Примерен случай: превръщане на таблица в таблици в база данни

Да кажем, че управляваш малък кетъринг бизнес и проследяваш всичко в една таблица: всеки ред е събитие с името на клиента, телефона и имейла му, датата, артикулите от менюто и цената.

Проблемите се появяват бързо. Същият клиент се появява в шест реда с два различни телефонни номера. Артикулите от менюто са написани в една клетка като "канапета x40, салата x2", така че не можеш да сумираш колко канапета си направил този месец.

В Postgres същата информация става четири таблици:

ТаблицаКолониБележки
clientsid, name, phone, emailИмейлът трябва да е уникален
eventsid, client_id, date, venue, statusclient_id трябва да съвпада с реален клиент
menu_itemsid, name, unit_priceПо един ред за всяко ястие
event_itemsevent_id, menu_item_id, quantityСвързва събитията с ястията, с количество

Сега телефонният номер на клиента живее на едно място. "Колко канапета направихме през март?" е една SQL заявка. А когато записваш ново събитие с артикулите му, транзакцията гарантира, че никога няма да остане събитие, на което са записани само половината артикули.

Това е стъпката, която хората пропускат, когато помолят AI да "направи приложение от моята таблица". Ръководството за превръщане на таблица в приложение отива по-далеч.

Ключови термини

  • Таблица, ред, колона: вид нещо, един екземпляр от него, една информация за него.
  • Първичен ключ (primary key): уникалният идентификатор на всеки ред, обикновено id.
  • Външен ключ (foreign key): колона, която сочи към ред в друга таблица, например client_id.
  • Схема (schema): дизайнът на всичките ти таблици и колони.
  • Миграция: запазена, повтаряема промяна на схемата, например "добави колона venue към events".
  • Заявка (query): въпрос или инструкция, написана на SQL.
  • Connection string: адресът и паролата, с които бекендът ти достига базата данни. Това е тайна – виж променливите на средата и тайните.
  • Управлявана Postgres: услуга, която пуска, архивира и обновява Postgres вместо теб.

За ежедневните операции, които всяко приложение извършва върху тези таблици – създаване, четене, обновяване, изтриване – виж какво означава CRUD.

Чести грешки и погрешни схващания

  • Една огромна таблица. Копирането на таблицата колона по колона води до същите проблеми с дублиране. Раздели повтарящите се неща на собствени таблици.
  • Съхраняване на списъци в едно текстово поле. "канапета x40, салата x2" в една колона не може да се брои и търси правилно. Използвай таблица за връзки.
  • Липса на ограничения. Без "имейлът трябва да е уникален" или "всяко събитие трябва да има клиент" лоши данни влизат тихо и се показват месеци по-късно.
  • Промяна на базата ръчно в продукция. Искай промените в схемата като миграции, така че промяната да е записана и може да се повтори.
  • Позволяване на браузъра да говори директно с базата данни. Фронтендът трябва да минава през бекенда ти, който проверява правата. Паролата за базата никога не трябва да е в кода на страницата.
  • "Postgres е само за големи компании." Работи с еднаква лекота за списък за чакане от 50 реда, и няма да ти се налага да я сменяш, докато растеш.
  • Предположение, че базата данни е резервно копие. Тя съхранява данни; не те пази автоматично от изтриването им. Провери какви резервни копия предлага хостът ти.

Какво да поискаш от AI инструмента

  • „Запазвай [нещата] в база данни. Таблици: … с тези полета: … Свързвай всяка [поръчка] с [клиент].“
  • „Направи имейла уникален при клиентите. Направи тези полета задължителни. Не позволявай поръчка без клиент.“
  • „Използвай миграции за всяка промяна на схемата.“
  • „Добави индекси за търсенията, които правим най-често: поръчки по клиент и по дата.“
  • „Целият достъп до базата минава през сървъра. Пази connection string в променливи на средата.“

Ако изобщо си нов с идеята за база данни, започни с какво е база данни, после се върни тук. Full-stack приложение показва къде стои базата данни до фронтенда и бекенда.

Postgres в Mythex

Mythex дава на всеки проект, който се нуждае от такава, собствена отделна Postgres база данни. Не я конфигурираш: поискай в чата ("запази имейлите от списъка за чакане в база данни") или използвай командата /database, и Mythex я свързва, вкарва данните за връзка в приложението ти и може да създаде таблиците вместо теб. Базата на публикувано приложение заспива след пет минути бездействие и се събужда при следващата заявка, а таксуваш времето, през което действително е била будна, от същия баланс с кредити като създаването. Подробностите са в документацията за базата данни, а шаблоните за табла са добро място да видиш приложения с данни.

Въпроси

Postgres същото ли е като PostgreSQL?

Да. PostgreSQL е официалното име, а Postgres е често срещаното кратко име; и двете означават една и съща релационна база данни с отворен код.

Postgres безплатен ли е?

Да. PostgreSQL е с отворен код под разрешителния PostgreSQL License, така че можеш да го използваш безплатно, включително в търговски продукти. Плащаш само за сървърите или за управляваната услуга, която го пуска.

Каква е разликата между Postgres и MySQL?

И двете са безплатни релационни SQL бази данни и са подходящи за повечето приложения. Postgres е известна със строгата си цялост на данните, богатите типове данни като JSONB и масивите и голямата екосистема от разширения; MySQL е известна с простотата си и дългата си история в уеб хостинга.

Добра ли е Postgres за малко приложение?

Да. Работи добре за списък за чакане от една таблица и за големи продукционни системи, така че няма да се налага да сменяш базата данни, докато приложението расте. Управляваните услуги улесняват работата без администратор на база данни.

Mythex · Pricing · Създай всичко с ИИ · Шаблони за уебсайтове и приложения · Mythex в сравнение · Речник на създаването на приложения с ИИ · Безплатни инструменти за създаване на приложения с ИИ · English

English አማርኛ العربية বাংলা Bosanski 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 简体中文 繁體中文(香港) 繁體中文(台灣)