Посібники

Що таке Postgres? База даних, на якій працює багато застосунків, простими словами

Postgres (офіційно PostgreSQL) — це безкоштовна реляційна база даних з відкритим кодом: програма, яка зберігає дані застосунку в таблицях із рядками та стовпцями, пов'язує ці таблиці між собою і відповідає на запитання про них мовою SQL. Він відомий надійністю, суворістю щодо збереження коректних даних і гнучкістю — від списку реєстрацій до записів великої компанії. Багато вебзастосунків і сервісів, які їх розміщують, побудовано на ньому.

Чому це важливо, коли ви створюєте з ШІ

Коли конструктор застосунків на ШІ додає до вашого проєкту «базу даних», є добрий шанс, що це Postgres. Вам не обов'язково писати SQL, щоб ним користуватися, але трохи розуміння дуже допомагає:

  • Ви можете описати дані у формі, яка потрібна базі. «Клієнти мають багато замовлень; кожне замовлення має багато позицій» безпосередньо перекладається на таблиці.
  • Ви можете попросити потрібні захисти. Postgres може сам відхиляти погані дані — дубльований email, замовлення для неіснуючого клієнта — якщо ШІ налаштує правила.
  • Ви можете перевірити, що зробив ШІ. Назви таблиць, стовпці та зв'язки легко перевірити в переглядачі таблиць, навіть якщо ви ніколи не торкаєтеся коду.

Повсякденна аналогія: дуже сувора канцелярія

Уявіть канцелярію з шафою для кожного виду речей — одна для клієнтів, одна для замовлень, одна для товарів. Кожна картка в шухляді має однакові друковані рубрики для заповнення. Кожна картка має унікальний номер, і картка замовлення не повторює деталі клієнта; вона просто каже «клієнт №214», вказуючи на шухляду клієнтів.

Клерк суворий. Він не прийме замовлення, що вказує на неіснуючого клієнта. Він не прийме картку з порожньою обов'язковою рубрикою. А якщо ви попросите перенести гроші з картки одного рахунку на картку іншого, він зробить або обидві частини, або жодної — ніколи лише одну.

Цей клерк — це Postgres. Шухляди — це таблиці, друковані рубрики — стовпці, кожна картка — рядок, а посилання «клієнт №214» — це зовнішній ключ.

Що Postgres робить добре

МожливістьЩо це означає простими словами
Таблиці та зв'язкиДані живуть у таблицях, які вказують одна на одну, тож нічого не копіюється в п'яти місцях
SQLСтандартна мова для запитань: «усі неоплачені замовлення за минулий місяць, спочатку найновіші»
Транзакції (ACID)Група змін або відбувається повністю, або не відбувається взагалі, навіть якщо сервер падає посеред процесу
Обмеження (constraints)Правила, які база сама забезпечує: обов'язкові поля, унікальні email, коректні зв'язки між таблицями
ІндексиШвидкі шляхи пошуку, щоб пошук лишався швидким, коли таблиці ростуть
JSONBЗберігання гнучких даних у форматі документа в стовпці, коли фіксована структура не підходить
Повнотекстовий пошукПошук слів у текстових полях без окремого пошукового сервісу, для простих випадків
РозширенняДодаткові модулі, як-от PostGIS для карт і місць або pgvector для зберігання векторів ШІ
Безпека на рівні рядківПравила всередині бази про те, які рядки може бачити конкретний користувач

Postgres почався як дослідницький проєкт в Каліфорнійському університеті в Берклі у 1980-х роках і з 1990-х розвивається у відкритому режимі глобальною спільнотою. Ця довга історія — причина, чому він часто є типовим вибором: він добре задокументований, широко підтримується, і кожен великий хмарний провайдер пропонує його керовану версію.

Робочий приклад: перетворення електронної таблиці на таблиці

Скажімо, у вас невеликий бізнес кейтерингу, і ви ведете весь облік в одній таблиці: кожен рядок — це подія з іменем клієнта, телефоном, email, датою, позиціями меню і ціною.

Проблеми з'являються швидко. Той самий клієнт з'являється в шести рядках з двома різними номерами телефонів. Позиції меню записані в одну клітинку як «канапе x40, салат x2», тож ви не можете порахувати, скільки канапе зробили цього місяця.

У Postgres та сама інформація стає чотирма таблицями:

ТаблицяСтовпціПримітки
clientsid, name, phone, emailEmail має бути унікальним
eventsid, client_id, date, venue, statusclient_id має відповідати реальному клієнту
menu_itemsid, name, unit_priceОдин рядок на страву
event_itemsevent_id, menu_item_id, quantityЗв'язує події зі стравами, з кількістю

Тепер телефон клієнта зберігається в одному місці. «Скільки канапе ми зробили у березні?» — це один SQL-запит. А коли ви записуєте нову подію з її позиціями, транзакція гарантує, що ніколи не буде події з половиною збережених позицій.

Цей крок люди часто пропускають, коли просять ШІ «зробити застосунок з моєї таблиці». Посібник як перетворити електронну таблицю на застосунок розповідає більше.

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

  • Таблиця, рядок, стовпець: вид речі, один її екземпляр, одна інформація про нього.
  • Первинний ключ: унікальний ідентифікатор кожного рядка, зазвичай id.
  • Зовнішній ключ: стовпець, що вказує на рядок в іншій таблиці, як-от client_id.
  • Схема: опис усіх ваших таблиць і стовпців.
  • Міграція: збережена, повторювана зміна схеми, наприклад «додати стовпець venue до events».
  • Запит: запитання або інструкція, написана мовою SQL.
  • Рядок підключення (connection string): адреса й пароль, за якими ваш бекенд звертається до бази. Це секрет — див. змінні середовища та секрети.
  • Керований Postgres: сервіс, який запускає, резервно копіює й оновлює Postgres за вас.

Для повсякденних операцій, які кожен застосунок виконує над цими таблицями — створення, читання, оновлення, видалення, — див. що означає CRUD.

Поширені помилки та хибні уявлення

  • Одна величезна таблиця. Копіювання стовпців таблиці один до одного веде до тих самих проблем з дублюванням. Виносьте те, що повторюється, у окремі таблиці.
  • Зберігання списків в одному текстовому полі. «канапе x40, салат x2» в одному стовпці не можна коректно порахувати чи знайти. Використовуйте таблицю-зв'язку.
  • Відсутність обмежень. Без правил «email має бути унікальним» або «кожна подія потребує клієнта» погані дані проникають непомітно і виринають через місяці.
  • Ручні зміни бази в продакшні. Просіть зміни схеми як міграції, щоб зміна фіксувалася і могла бути повторена.
  • Дозвіл браузеру звертатися до бази напряму. Фронтенд має йти через ваш бекенд, який перевіряє дозволи. Пароль до бази ніколи не належить до коду сторінки.
  • «Postgres лише для великих компаній». Він так само добре працює для списку очікування на 50 рядків, і вам не доведеться з нього переходити, коли ви зростаєте.
  • Припущення, що база даних — це резервна копія. Вона зберігає дані; вона не захищає автоматично від їх видалення. Перевірте, які резервні копії надає ваш хостинг.

Що попросити у вашого конструктора ШІ

  • «Зберігай [речі] в базі даних. Таблиці: … з такими полями: … Пов'язуй кожне [замовлення] з [клієнтом].»
  • «Зроби email унікальним для клієнтів. Зроби ці поля обов'язковими. Не дозволяй замовлення без клієнта.»
  • «Використовуй міграції для кожної зміни схеми.»
  • «Додай індекси для пошуків, які ми робимо найчастіше: замовлення за клієнтом і за датою.»
  • «Увесь доступ до бази йде через сервер. Тримай рядок підключення у змінних середовища.»

Якщо ви взагалі новачок у ідеї бази даних, почніть із що таке база даних, а потім поверніться сюди. Повний стек застосунку показує, де база даних розташована поруч із фронтендом і бекендом.

Postgres у Mythex

Mythex надає кожному проєкту, якому вона потрібна, власну виділену базу Postgres. Налаштовувати її не треба: попросіть у чаті («зберігай email-адреси списку очікування в базі даних») або використайте команду /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 简体中文 繁體中文(香港) 繁體中文(台灣)