Руководства

Что такое Postgres? База данных, на которой работают многие приложения

Postgres (официально PostgreSQL) — бесплатная реляционная база данных с открытым кодом: программа, которая хранит данные приложения в таблицах из строк и столбцов, связывает таблицы между собой и отвечает на вопросы о них на языке SQL. Она известна надёжностью, строгим отношением к сохранности данных и гибкостью — от списка регистраций до записей крупной компании. Многие веб-приложения и многие сервисы, которые их хостят, построены на ней.

Почему Postgres важен при создании приложений с ИИ

Когда конструктор приложений с ИИ добавляет в проект «базу данных», с большой вероятностью это Postgres. Писать SQL не нужно, но небольшое понимание очень помогает:

  • Можно описать данные в той форме, которая нужна базе. Фраза «у клиентов много заказов, в каждом заказе много позиций» напрямую превращается в таблицы.
  • Можно попросить нужную защиту. Postgres сам может отказаться принимать плохие данные — например, дубликат почты или заказ для несуществующего клиента, — если ИИ настроит правила.
  • Можно прочитать, что сделал ИИ. Названия таблиц, колонки и связи легко проверить в просмотрщике таблиц, даже не трогая код.

Бытовая аналогия: очень строгий архив

Представьте архивную канцелярию с шкафом для каждого вида документов: один для клиентов, один для заказов, один для товаров. Каждая карточка в ящике заполнена по одинаковым печатным полям. У каждой карточки есть уникальный номер, а карточка заказа не повторяет данные клиента, а просто указывает «клиент № 214» и ссылается на ящик клиентов.

Клерк строгий. Он не примет заказ, который ссылается на несуществующего клиента. Он не примет карточку с пустым обязательным полем даты. А если вы попросите перевести деньги с одной карточки счёта на другую, он выполнит либо обе части, либо ни одной — никогда только одну.

Это и есть Postgres. Ящики — это таблицы, печатные поля — колонки, каждая карточка — строка, а ссылка «клиент № 214» — внешний ключ.

Что Postgres делает хорошо

ВозможностьЧто это значит простыми словами
Таблицы и связиДанные живут в таблицах, которые ссылаются друг на друга, поэтому ничего не копируется в пяти местах
SQLСтандартный язык для вопросов: «все неоплаченные заказы за прошлый месяц, сначала новые»
Транзакции (ACID)Группа изменений либо целиком выполняется, либо не выполняется ни одно её изменение, даже если сервер упал на полпути
Ограничения (constraints)Правила, которые база проверяет сама: обязательные поля, уникальные адреса почты, корректные связи между таблицами
ИндексыУскорители поиска, чтобы запросы оставались быстрыми по мере роста таблиц
JSONBХранение гибких данных в стиле документов в колонке, когда фиксированная структура не подходит
Полнотекстовый поискПоиск слов в текстовых полях без отдельного поискового сервиса — для простых случаев
РасширенияДополнения, например PostGIS для карт и геоданных или pgvector для хранения векторов ИИ
Безопасность на уровне строк (row-level security)Правила внутри базы: какие строки видит конкретный пользователь

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

Пример: превращаем таблицу в базу данных

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

Проблемы возникают быстро. Один и тот же клиент встречается в шести строках с двумя разными телефонами. Позиции меню набраны в одной ячейке как «канапе 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-запрос. А когда вы записываете новое мероприятие с позициями, транзакция гарантирует, что не останется мероприятия с наполовину сохранёнными позициями.

Этот шаг люди часто пропускают, когда просят ИИ «сделать приложение из моей таблицы». Руководство по превращению таблицы в приложение идёт дальше.

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

  • Таблица, строка, колонка: вид сущности, один её экземпляр, одна часть информации о ней.
  • Первичный ключ: уникальный идентификатор каждой строки, обычно id.
  • Внешний ключ: колонка, которая указывает на строку в другой таблице, например client_id.
  • Схема: структура всех ваших таблиц и колонок.
  • Миграция: сохранённое, повторяемое изменение схемы, например «добавить колонку venue в events».
  • Запрос: вопрос или инструкция, написанная на SQL.
  • Строка подключения: адрес и пароль, по которым бэкенд подключается к базе. Это секрет — см. переменные окружения и секреты.
  • Управляемый Postgres: сервис, который запускает, резервирует и обновляет Postgres за вас.

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

Частые ошибки и заблуждения

  • Одна огромная таблица. Копирование таблицы колонка за колонкой приводит к тем же проблемам с дублированием. Выносите повторяющееся в отдельные таблицы.
  • Хранение списков в одном текстовом поле. «канапе x40, салат x2» в одной колонке нельзя нормально посчитать или найти. Используйте связующую таблицу.
  • Отсутствие ограничений. Без правила «почта должна быть уникальной» или «у каждого мероприятия должен быть клиент» плохие данные тихо попадают в базу и всплывают через месяцы.
  • Ручное изменение базы в продакшене. Просите изменения схемы оформлять как миграции, чтобы их можно было записать и повторить.
  • Позволять браузеру напрямую обращаться к базе. Фронтенд должен работать через ваш бэкенд, который проверяет права. Пароль от базы никогда не должен попадать в код страницы.
  • «Postgres нужен только крупным компаниям». Он отлично работает и для списка ожидания из 50 строк, и вам не придётся с него уходить по мере роста.
  • Считать, что база — это резервная копия. Она хранит данные, но сама по себе не защищает от их удаления. Проверьте, какие резервные копии даёт ваш хостинг.

Что попросить у конструктора ИИ

  • «Сохраняй [объекты] в базе данных. Таблицы: … с такими полями: … Свяжи каждый [заказ] с [клиентом].»
  • «Сделай почту клиентов уникальной. Сделай эти поля обязательными. Не допускай заказ без клиента.»
  • «Используй миграции для каждого изменения схемы.»
  • «Добавь индексы для самых частых поисков: заказы по клиенту и по дате.»
  • «Весь доступ к базе идёт через сервер. Строку подключения храни в переменных окружения.»

Если вы вообще только знакомитесь с идеей базы данных, начните с что такое база данных, а потом вернитесь сюда. Полноценное приложение показывает, где база данных находится рядом с фронтендом и бэкендом.

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 简体中文 繁體中文(香港) 繁體中文(台灣)