Концепції, цінність і типові сценарії
Концепції, цінність і типові сценарії
Preparing Ring content
Preparing Ring content
Preparing Ring content
Ring зберігає PostgreSQL-схему у двох місцях усередині ring/web/data/. schema.sql є сплощеним єдине джерело істини для нових баз. migrations/ містить пронумеровані інкрементальні файли, які довели наявні бази до тієї ж форми. Ця сторінка пояснює, який шлях застосовувати і коли.
Використовуйте вкладки Засновник / Розробник у бічній панелі документації, щоб відфільтрувати цю сторінку. Спільні розділи стосуються обох аудиторій.
Статус: ./install.sh setup-db і npm run db:apply-schema зараз падають на публічних checkout, бо шукають шляхи, які переїхали під web/. Крім того, schema.sql містить CREATE EXTENSION IF NOT EXISTS postgis;, тож звичайний psql -f data/schema.sql зупиняється з помилкою на образах PostgreSQL без PostGIS (наприклад postgres:16-alpine). Використовуйте команди з кроку 2 нижче.
| Раніше в документації | Поточна поведінка |
|---|---|
Застосувати schema.sql, потім 002, 003, 004 по порядку | Свіжі інсталяції застосовують лише web/data/schema.sql (сплощений, версія 4.1.0) |
Запустити ./scripts/run-migration.sh або apply-*-migrations-dev.sh | Ці хелпери відсутні в публічному дереві. Використовуйте psql напряму |
Встановити Homebrew postgresql@18 зі bootstrap-скриптом | Підходить будь-який PostgreSQL 16 або новіший. Bootstrap-скрипт внутрішній для Ringdom |
Сіяти новини з scripts/seed-news-v1.6.0.sql | Цього файлу немає. Сіди для валют, країн, налаштувань магазину та категорій новин є всередині schema.sql |
data/schema-delta.sql | Не використовується. Дельти живуть як пронумеровані файли в data/migrations/ |
Вам не потрібно розуміти SQL, щоб запускати клон Ring, але варто знати правило, якого дотримується ваш розробник: нова база отримує один файл, наявна база отримує лише нові файли. Саме це правило робить оновлення нудними й передбачуваними.
Один файл схеми створює всі таблиці (109 на версії 4.1.0) плюс еталонні сіди. Без повторного програвання історії.
Ваш розробник застосовує лише ті пронумеровані файли, яких база ще не бачила, після бекапу.
PostgreSQL є типовим production-бекенд (k8s-postgres-fcm).
Next-step: run the app against the database you just created.
Same-workflow: apply the schema to the compose Postgres container.
Prerequisite: why k8s-postgres-fcm needs this schema.
See-also: install.sh and the npm db scripts, including the ones that fail today.
Ring зберігає PostgreSQL-схему у двох місцях усередині ring/web/data/. schema.sql є сплощеним єдине джерело істини для нових баз. migrations/ містить пронумеровані інкрементальні файли, які довели наявні бази до тієї ж форми. Ця сторінка пояснює, який шлях застосовувати і коли.
Використовуйте вкладки Засновник / Розробник у бічній панелі документації, щоб відфільтрувати цю сторінку. Спільні розділи стосуються обох аудиторій.
Статус: ./install.sh setup-db і npm run db:apply-schema зараз падають на публічних checkout, бо шукають шляхи, які переїхали під web/. Крім того, schema.sql містить CREATE EXTENSION IF NOT EXISTS postgis;, тож звичайний psql -f data/schema.sql зупиняється з помилкою на образах PostgreSQL без PostGIS (наприклад postgres:16-alpine). Використовуйте команди з кроку 2 нижче.
| Раніше в документації | Поточна поведінка |
|---|---|
Застосувати schema.sql, потім 002, 003, 004 по порядку | Свіжі інсталяції застосовують лише web/data/schema.sql (сплощений, версія 4.1.0) |
Запустити ./scripts/run-migration.sh або apply-*-migrations-dev.sh | Ці хелпери відсутні в публічному дереві. Використовуйте psql напряму |
Встановити Homebrew postgresql@18 зі bootstrap-скриптом | Підходить будь-який PostgreSQL 16 або новіший. Bootstrap-скрипт внутрішній для Ringdom |
Сіяти новини з scripts/seed-news-v1.6.0.sql | Цього файлу немає. Сіди для валют, країн, налаштувань магазину та категорій новин є всередині schema.sql |
data/schema-delta.sql | Не використовується. Дельти живуть як пронумеровані файли в data/migrations/ |
Вам не потрібно розуміти SQL, щоб запускати клон Ring, але варто знати правило, якого дотримується ваш розробник: нова база отримує один файл, наявна база отримує лише нові файли. Саме це правило робить оновлення нудними й передбачуваними.
Один файл схеми створює всі таблиці (109 на версії 4.1.0) плюс еталонні сіди. Без повторного програвання історії.
Ваш розробник застосовує лише ті пронумеровані файли, яких база ще не бачила, після бекапу.
PostgreSQL є типовим production-бекенд (k8s-postgres-fcm).
Next-step: run the app against the database you just created.
Same-workflow: apply the schema to the compose Postgres container.
Prerequisite: why k8s-postgres-fcm needs this schema.
See-also: install.sh and the npm db scripts, including the ones that fail today.
Ring зберігає PostgreSQL-схему у двох місцях усередині ring/web/data/. schema.sql є сплощеним єдине джерело істини для нових баз. migrations/ містить пронумеровані інкрементальні файли, які довели наявні бази до тієї ж форми. Ця сторінка пояснює, який шлях застосовувати і коли.
Використовуйте вкладки Засновник / Розробник у бічній панелі документації, щоб відфільтрувати цю сторінку. Спільні розділи стосуються обох аудиторій.
Статус: ./install.sh setup-db і npm run db:apply-schema зараз падають на публічних checkout, бо шукають шляхи, які переїхали під web/. Крім того, schema.sql містить CREATE EXTENSION IF NOT EXISTS postgis;, тож звичайний psql -f data/schema.sql зупиняється з помилкою на образах PostgreSQL без PostGIS (наприклад postgres:16-alpine). Використовуйте команди з кроку 2 нижче.
| Раніше в документації | Поточна поведінка |
|---|---|
Застосувати schema.sql, потім 002, 003, 004 по порядку | Свіжі інсталяції застосовують лише web/data/schema.sql (сплощений, версія 4.1.0) |
Запустити ./scripts/run-migration.sh або apply-*-migrations-dev.sh | Ці хелпери відсутні в публічному дереві. Використовуйте psql напряму |
Встановити Homebrew postgresql@18 зі bootstrap-скриптом | Підходить будь-який PostgreSQL 16 або новіший. Bootstrap-скрипт внутрішній для Ringdom |
Сіяти новини з scripts/seed-news-v1.6.0.sql | Цього файлу немає. Сіди для валют, країн, налаштувань магазину та категорій новин є всередині schema.sql |
data/schema-delta.sql | Не використовується. Дельти живуть як пронумеровані файли в data/migrations/ |
Вам не потрібно розуміти SQL, щоб запускати клон Ring, але варто знати правило, якого дотримується ваш розробник: нова база отримує один файл, наявна база отримує лише нові файли. Саме це правило робить оновлення нудними й передбачуваними.
Один файл схеми створює всі таблиці (109 на версії 4.1.0) плюс еталонні сіди. Без повторного програвання історії.
Ваш розробник застосовує лише ті пронумеровані файли, яких база ще не бачила, після бекапу.
PostgreSQL є типовим production-бекенд (k8s-postgres-fcm).
Next-step: run the app against the database you just created.
Same-workflow: apply the schema to the compose Postgres container.
Prerequisite: why k8s-postgres-fcm needs this schema.
See-also: install.sh and the npm db scripts, including the ones that fail today.
schema.sql051_likes_uci_favorites_indexes.sql. Ваш розробник робить бекап, застосовує цей один файл і передеплоює.051 і новіші можуть мати відповідний .down.sql, щоб зміну можна було відкотити. Старіші файли ні.DB_HOSTDB_PORTDB_NAMEDB_USERDB_PASSWORDDB_SSLDATABASE_URLНаступний крок виконуйте як суперкористувач або власник бази, бо schema.sql створює розширення.
Якщо на сервері встановлено PostGIS (наприклад образ postgis/postgis), застосуйте файл як є:
На звичайному PostgreSQL спочатку приберіть рядок PostGIS. Жодна таблиця не використовує тип PostGIS, тож більше нічого не змінюється:
Надайте ролі додатка (DB_USER) доступ до схеми public, потім запустіть додаток.
Застосовуйте лише файли, яких база ще не бачила. Деякі міграції записують себе в schema_versions через INSERT ... WHERE NOT EXISTS (016 до 025, 037, 043 до 046, 050, 051). Інші цього не роблять, тож перед застосуванням перевіряйте наявність таблиць або індексів, які вони створюють.
Щоб відкотити міграцію з down-файлом, застосуйте 051_likes_uci_favorites_indexes.down.sql так само. Він також видаляє свій рядок у schema_versions.
Візьміть наступний вільний номер після найвищого файлу в data/migrations/. Зробіть його ідемпотентним (IF NOT EXISTS), запишіть у schema_versions і додайте .down.sql, коли зміну можна відкотити.
Це запускає ring/scripts/flatten-schema-from-migrations.sh. Потрібен локальний PostgreSQL, де ваша роль може створювати бази (PGHOST і PGUSER за замовчуванням localhost і ring_user). Скрипт створює scratch-базу ring_schema_flatten, бекапить schema.sql як schema.sql.bak-pre-flatten-<timestamp>, застосовує попередню схему плюс усі міграції крім 001, дампить DDL плюс еталонні сіди й перевіряє результат на ring_schema_flatten_verify. Крок verify потребує PostGIS з тієї ж причини, що вище.
Ні. Сплощення лише переписує файл schema.sql у репозиторії. Живі бази воно ніколи не чіпає.
schema.sql. Які файли мені потрібні?Порівняйте SELECT version FROM schema_versions із пронумерованими файлами, потім застосуйте відсутні по порядку після бекапу. Лише деякі файли записують версію (див. «Наявна база» вище), тож за сумніву перевіряйте їхні таблиці. Зверніть увагу: свіжа інсталяція з сьогоднішнього schema.sql показує версії до 045, хоча таблиці та індекси з 046 до 051 уже присутні.
CREATE EXTENSION postgis?Ваша збірка PostgreSQL не містить PostGIS. Приберіть цей рядок, як показано в кроці 2, або використовуйте образ із PostGIS.
schema.sql051_likes_uci_favorites_indexes.sql. Ваш розробник робить бекап, застосовує цей один файл і передеплоює.051 і новіші можуть мати відповідний .down.sql, щоб зміну можна було відкотити. Старіші файли ні.DB_HOSTDB_PORTDB_NAMEDB_USERDB_PASSWORDDB_SSLDATABASE_URLНаступний крок виконуйте як суперкористувач або власник бази, бо schema.sql створює розширення.
Якщо на сервері встановлено PostGIS (наприклад образ postgis/postgis), застосуйте файл як є:
На звичайному PostgreSQL спочатку приберіть рядок PostGIS. Жодна таблиця не використовує тип PostGIS, тож більше нічого не змінюється:
Надайте ролі додатка (DB_USER) доступ до схеми public, потім запустіть додаток.
Застосовуйте лише файли, яких база ще не бачила. Деякі міграції записують себе в schema_versions через INSERT ... WHERE NOT EXISTS (016 до 025, 037, 043 до 046, 050, 051). Інші цього не роблять, тож перед застосуванням перевіряйте наявність таблиць або індексів, які вони створюють.
Щоб відкотити міграцію з down-файлом, застосуйте 051_likes_uci_favorites_indexes.down.sql так само. Він також видаляє свій рядок у schema_versions.
Візьміть наступний вільний номер після найвищого файлу в data/migrations/. Зробіть його ідемпотентним (IF NOT EXISTS), запишіть у schema_versions і додайте .down.sql, коли зміну можна відкотити.
Це запускає ring/scripts/flatten-schema-from-migrations.sh. Потрібен локальний PostgreSQL, де ваша роль може створювати бази (PGHOST і PGUSER за замовчуванням localhost і ring_user). Скрипт створює scratch-базу ring_schema_flatten, бекапить schema.sql як schema.sql.bak-pre-flatten-<timestamp>, застосовує попередню схему плюс усі міграції крім 001, дампить DDL плюс еталонні сіди й перевіряє результат на ring_schema_flatten_verify. Крок verify потребує PostGIS з тієї ж причини, що вище.
Ні. Сплощення лише переписує файл schema.sql у репозиторії. Живі бази воно ніколи не чіпає.
schema.sql. Які файли мені потрібні?Порівняйте SELECT version FROM schema_versions із пронумерованими файлами, потім застосуйте відсутні по порядку після бекапу. Лише деякі файли записують версію (див. «Наявна база» вище), тож за сумніву перевіряйте їхні таблиці. Зверніть увагу: свіжа інсталяція з сьогоднішнього schema.sql показує версії до 045, хоча таблиці та індекси з 046 до 051 уже присутні.
CREATE EXTENSION postgis?Ваша збірка PostgreSQL не містить PostGIS. Приберіть цей рядок, як показано в кроці 2, або використовуйте образ із PostGIS.
schema.sql051_likes_uci_favorites_indexes.sql. Ваш розробник робить бекап, застосовує цей один файл і передеплоює.051 і новіші можуть мати відповідний .down.sql, щоб зміну можна було відкотити. Старіші файли ні.DB_HOSTDB_PORTDB_NAMEDB_USERDB_PASSWORDDB_SSLDATABASE_URLНаступний крок виконуйте як суперкористувач або власник бази, бо schema.sql створює розширення.
Якщо на сервері встановлено PostGIS (наприклад образ postgis/postgis), застосуйте файл як є:
На звичайному PostgreSQL спочатку приберіть рядок PostGIS. Жодна таблиця не використовує тип PostGIS, тож більше нічого не змінюється:
Надайте ролі додатка (DB_USER) доступ до схеми public, потім запустіть додаток.
Застосовуйте лише файли, яких база ще не бачила. Деякі міграції записують себе в schema_versions через INSERT ... WHERE NOT EXISTS (016 до 025, 037, 043 до 046, 050, 051). Інші цього не роблять, тож перед застосуванням перевіряйте наявність таблиць або індексів, які вони створюють.
Щоб відкотити міграцію з down-файлом, застосуйте 051_likes_uci_favorites_indexes.down.sql так само. Він також видаляє свій рядок у schema_versions.
Візьміть наступний вільний номер після найвищого файлу в data/migrations/. Зробіть його ідемпотентним (IF NOT EXISTS), запишіть у schema_versions і додайте .down.sql, коли зміну можна відкотити.
Це запускає ring/scripts/flatten-schema-from-migrations.sh. Потрібен локальний PostgreSQL, де ваша роль може створювати бази (PGHOST і PGUSER за замовчуванням localhost і ring_user). Скрипт створює scratch-базу ring_schema_flatten, бекапить schema.sql як schema.sql.bak-pre-flatten-<timestamp>, застосовує попередню схему плюс усі міграції крім 001, дампить DDL плюс еталонні сіди й перевіряє результат на ring_schema_flatten_verify. Крок verify потребує PostGIS з тієї ж причини, що вище.
Ні. Сплощення лише переписує файл schema.sql у репозиторії. Живі бази воно ніколи не чіпає.
schema.sql. Які файли мені потрібні?Порівняйте SELECT version FROM schema_versions із пронумерованими файлами, потім застосуйте відсутні по порядку після бекапу. Лише деякі файли записують версію (див. «Наявна база» вище), тож за сумніву перевіряйте їхні таблиці. Зверніть увагу: свіжа інсталяція з сьогоднішнього schema.sql показує версії до 045, хоча таблиці та індекси з 046 до 051 уже присутні.
CREATE EXTENSION postgis?Ваша збірка PostgreSQL не містить PostGIS. Приберіть цей рядок, як показано в кроці 2, або використовуйте образ із PostGIS.