INFRANEST_
Статус · 00:00:00 MSKСервис в бете
/01С чего начать

Инструкция для новичков

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

/02Словарь

Что означает каждый термин

Без этих десяти слов не читается ни одна инструкция в интернете.

ТерминЧто это простыми словами
База данныхМесто, где приложение хранит данные: пользователей, заказы, сообщения. Это не файл на ноутбуке, а отдельная программа на сервере, к которой подключаются по сети.
PostgreSQL (Postgres)Конкретная база данных. Мы поднимаем её за вас, обновляем и делаем копии.
Таблица, строка, колонкаКак лист Excel: таблица users, в ней строки — пользователи, колонки — email, created_at.
SQLЯзык запросов: select * from users where id = 1. Его понимает и Postgres, и любой драйвер.
Хост (host)Адрес сервера. У нас infranest.ru.
Порт (port)Номер «двери» на сервере. Для Postgres — 5432, для Kafka — 9093.
Пользователь и парольЛогин и пароль вашей базы. Логин совпадает с названием базы, пароль генерируем мы и показываем один раз.
Строка подключенияОдна строка, где собрано всё: postgresql://база:пароль@infranest.ru:5432/база?sslmode=require. Её вставляют в проект вместо ручной настройки.
TLS / SSLШифрование канала. Пароль и данные идут по сети зашифрованными. У нас TLS обязателен, отказаться нельзя — это защита вас же.
PgBouncer«Швейцар» на входе: держит соединения и не даёт приложению исчерпать лимит. Вы подключаетесь к нему, он — к Postgres.
БэкапРезервная копия. Мы делаем её каждую ночь и храним две последние копии.
КвотаЛимит диска для вашей базы. Указывается в тарифе: 100 МБ, 1 ГБ, 5 ГБ и так далее.
KafkaНе база, а «почта» для программ: один сервис кладёт сообщение, другой забирает. Нужна, когда частей приложения несколько.
/03Подключение

Пять шагов до первого запроса

  1. Зарегистрируйтесь. Нужны только почта и пароль, карта не требуется. Бесплатная база создаётся сразу.
  2. Создайте базу. В кабинете нажмите «Создать» — имя базы сервис придумает сам, например t_3fa1c9. Менять его не нужно и нельзя: это же и логин. Через несколько секунд база готова.
  3. Получите пароль. Кнопка «Получить пароль» создаёт пароль и показывает его один раз: после обновления страницы он скроется. Сохраните в менеджер паролей — восстановить нельзя, только сменить.
  4. Скопируйте строку подключения. В кабинете есть готовые примеры для psql, DBeaver и языков программирования — копируются в один клик.
  5. Проверьте. Самый простой способ — psql:
    psql "postgresql://t_3fa1c9:ПАРОЛЬ@infranest.ru:5432/t_3fa1c9?sslmode=require" -c "select now();"
    Если в ответ пришла дата — всё работает.
В DBeaver: «Новое соединение» → PostgreSQL → Host infranest.ru, Port 5432, Database и Username — имя вашей базы (в кабинете, вид t_3fa1c9), SSL — require. Пароль — тот, что показали один раз.

Что писать в приложение

Обычно достаточно одной строки — приложение само разберёт её на хост, порт, логин и пароль. В примерах ниже t_3fa1c9 — имя базы, которое придумал сервис; своё смотрите в кабинете, оно же будет логином.

DATABASE_URL=postgresql://t_3fa1c9:ПАРОЛЬ@infranest.ru:5432/t_3fa1c9?sslmode=require

Для Java/Spring — обычный JDBC-адрес: jdbc:postgresql://infranest.ru:5432/t_3fa1c9?sslmode=require, логин и пароль отдельными свойствами.

/04Код

Примеры для каждого языка

Полные, с копированием, лежат в кабинете. Здесь — минимальный рабочий каркас.

Python

import psycopg
conn = psycopg.connect("postgresql://t_3fa1c9:ПАРОЛЬ@infranest.ru:5432/t_3fa1c9?sslmode=require")
with conn.cursor() as cur:
    cur.execute("select version()")
    print(cur.fetchone())

Node.js

const { Pool } = require("pg");
const db = new Pool({ connectionString: process.env.DATABASE_URL, ssl: true });
const { rows } = await db.query("select now()");
console.log(rows);

Java / Spring Boot

spring.datasource.url=jdbc:postgresql://infranest.ru:5432/t_3fa1c9?sslmode=require
spring.datasource.username=t_3fa1c9
spring.datasource.password=ПАРОЛЬ

PHP, Go, .NET

Любой драйвер PostgreSQL подойдёт: PDO с pdo_pgsql, pgx для Go, Npgsql для .NET. Правило одно: строка подключения та же, TLS обязателен.

/05Безопасность

Пароли, TLS и лимиты

  • Один пароль на базу. У каждой базы свой пользователь, соседние базы его не видят.
  • Пароль показывается один раз. Мы храним только его хэш. Забыли — сбросьте в кабинете, старый перестанет работать.
  • TLS обязателен. Без sslmode=require соединение не установится: так пароль не уйдёт открытым текстом.
  • Лимит соединений. У Free — 3, у «Недели» и Starter — 10, у Pro — 25. Приложению хватает 5–10; пул соединений в коде лучше ограничить этим числом.
  • Долгие запросы прерываются. Ограничение 30 секунд. Это защита общей базы от случайного select * на миллион строк.
  • Временные файлы ограничены. От 512 МБ до 4 ГБ в зависимости от тарифа: тяжёлая сортировка не съест диск сервера.
/06Тарифы

Что сколько стоит

Цена за период тарифа — неделя или месяц, НДС не облагается (УСН). Платить картой через ЮKassa, чек приходит на почту. Одна база на аккаунт на любом тарифе.

ТарифЦенаДискСоединенийПосле неоплаты
Free0 ₽100 МБ3не истекает
Неделя69 ₽ за 7 дней1 ГБ10только чтение 3 дня
Starter129 ₽/мес1 ГБ10только чтение 3 дня
Pro439 ₽/мес5 ГБ25только чтение 3 дня

Kafka

ТарифЦенаПользователейТопиковХранение
FreeKafka не входит — только PostgreSQL
Неделя69 ₽ за 7 дней45512 МБ
Starter129 ₽/мес6101 ГБ
Pro439 ₽/мес20504 ГБ

Как перейти на другой тариф

  1. В кабинете нажмите «Сменить тариф».
  2. Выберите нужный и оплатите — лимиты диска и соединений применятся сразу после оплаты, база не пересоздаётся.
  3. Понизить тариф можно, только если данные влезают в новый диск. Иначе сначала почистите базу.
Деньги списываются за период тарифа, дальше оплата вручную — автосписаний нет. За 3 дня до окончания мы пришлём письмо.
/07Неоплата

Что будет, если не оплатить

Данные не исчезают в один момент. У вас есть время спокойно продлить или выгрузить всё.

КогдаЧто с базой
Оплаченный период закончилсяТолько чтение. База работает, но запись отклоняется. Это и есть «льготный период»: 3 дня на любом платном тарифе.
Льготный период закончилсяПриостановка. Вход закрыт, данные лежат на диске ещё 14 дней. Ничего не удалено.
Прошли и эти 14 днейБаза попадает в список на удаление. Автоудаление сейчас выключено: мы не удаляем данные без предупреждения и делаем финальный дамп.
Оплата в любой момент до удаления возвращает базу в работу: статус снова «работает», лимиты прежние. Если база в режиме «только чтение», вы всё равно можете выгрузить данные — pg_dump работает.
/08Диск

Что будет, если закончится место

ЗаполненоЧто происходит
80%Письмо на почту: пора прибраться. База работает как обычно.
100%База становится «только для чтения». Запись отклоняется, чтение работает. Приходит письмо.
120%Ничего не блокируется мгновенно: даём неделю на чистку, приходит письмо с датой.
Неделя прошлаБаза блокируется: вход закрыт, пока не станет меньше лимита.

Как почистить

  • Удалить ненужные строки: delete from logs where created_at < now() - interval '30 days'.
  • Освободить место на диске после удаления: vacuum full logs (таблица на время блокируется, делайте в простой).
  • Если подходящих данных больше нет — сменить тариф на больший.
Если база уже «только для чтения», в кабинете есть кнопка «Разрешить очистку»: она открывает запись на 15 минут, чтобы вы успели удалить лишнее. Окно можно брать раз в час.
/09Kafka

Kafka: зачем и как подключить

Kafka нужна, когда приложение состоит из нескольких частей и они передают друг другу события. Для обычного сайта или бота хватит PostgreSQL.

  1. Kafka входит в платные тарифы («Неделя», Starter, Pro): после оплаты подписка создаётся сама, с префиксом вида k_1a2b3c.
  2. Создайте пользователей (Producer — пишет, Consumer — читает) и топики. Имена начинаются с вашего префикса.
  3. Подключение: infranest.ru:9093, протокол SASL_SSL, механизм SCRAM-SHA-512, логин и пароль — из кабинета.
spring.kafka.bootstrap-servers=infranest.ru:9093
spring.kafka.properties.security.protocol=SASL_SSL
spring.kafka.properties.sasl.mechanism=SCRAM-SHA-512
spring.kafka.properties.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="k_1a2b3c-producer" password="ПАРОЛЬ";

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

/10Ошибки

Частые ошибки и их смысл

СообщениеЧто значит и что делать
password authentication failedНеверный пароль. Сбросьте его в кабинете; проверьте, что не осталось лишних пробелов при копировании.
no such user или role does not existЛогин не совпадает с именем базы, или база приостановлена из-за неоплаты. Проверьте статус в кабинете.
too many clients already / too many connectionsПриложение открыло больше соединений, чем разрешает тариф. Ограничьте пул (5–10) или возьмите тариф выше.
cannot execute INSERT in a read-only transactionБаза в режиме «только чтение»: закончился оплаченный период, превышен диск или вы сами включили окно очистки. Смотрите статус в кабинете.
SSL required / server does not support SSLВ строке подключения нет sslmode=require, либо драйвер старый. TLS у нас обязателен.
canceling statement due to statement timeoutЗапрос выполнялся дольше 30 (60) секунд. Добавьте индексы или ограничьте выборку.
Подключение «висит» и не отвечаетПроверьте хост и порт (infranest.ru:5432), а также что провайдер/сеть не блокирует исходящие соединения.
/11Помощь

Куда писать, если не получается

Мы отвечаем в рабочие дни, обычно в течение нескольких часов.

  • Почта: support@infranest.ru
  • Обращение в кабинете: раздел «Обращения» — там же видна переписка и ответы.
  • Что приложить: имя базы, текст ошибки, язык и версию драйвера. Пароль не присылайте никогда.
Ещё не создали базу?

Free — без карты и без срока. Хватит, чтобы пройти инструкцию и понять, как всё устроено.

Создать базу ↗