lesson ── postgres-labs ── ~20 мин ── 5 шагов
Пройди хранение сверху вниз: кластер, его базы, схемы, табличные пространства. Перед каждым запросом предскажи результат - сколько баз в кластере, в какой схеме лежит flights.
интерактивный sandbox
Поднимется контейнер postgreslab/postgres-base с PostgreSQL 17 и psql. В браузере откроется терминал, база lab уже настроена. Каждый шаг проверяется автоматически. Сеть air-gapped, наружу контейнер не ходит.
stack ── PostgreSQL 17 · psql · 1 GB RAM · air-gapped · самоуничтожается через 45 мин простоя
Весь кластер - это один каталог на диске. Узнай его путь.
SHOW data_directory;
✓ Это PGDATA - корень всего хранения кластера.
Предскажи число баз (три системные плюс учебная), потом проверь.
SELECT oid, datname FROM pg_database ORDER BY oid;
SELECT count(*) FROM pg_database;
template1, template0, postgres - системные; lab - наша.
✓ Четыре базы: три системные и lab.
Внутри базы объекты разложены по схемам. Узнай, в какой ты сейчас.
SELECT current_schema();
SHOW search_path;
✓ По умолчанию объекты создаются в схеме public.
Предскажи, сколько табличных пространств на свежем кластере, и проверь.
SELECT spcname FROM pg_tablespace;
Два есть всегда: pg_default и pg_global.
✓ pg_default и pg_global - два пространства по умолчанию.
Сложи иерархию в путь: база и файл таблицы. Убедись, что первое число пути - это OID базы lab.
SELECT pg_relation_filepath('flights');SELECT oid FROM pg_database WHERE datname = 'lab';
✓ Путь base/<oid lab>/<relfilenode> сошёлся.
Кластер - один каталог PGDATA с несколькими базами. Внутри базы объекты разложены по схемам (по умолчанию public). Данные можно вынести в табличное пространство. Путь к таблице - base/<oid базы>/<relfilenode>.
команды
SHOW data_directory;каталог данных кластераSELECT oid, datname FROM pg_database;базы кластера и их OIDSELECT spcname FROM pg_tablespace;табличные пространстваSELECT pg_relation_filepath('flights');путь к файлу таблицыконцепции