МожливостіСутності
Документація
    Ring Platform

    Децентралізоване самобудівне майбутнє

    Увійти
    Сутності
    Можливості
    Магазин
    Документація
    Концепції
    RING ЕкономікаSonoratek LLCГлобальний впливAI зустрічає Web3
    Розпочати
    Швидкий стартКалькуляторДорожня карта
    Конфіденційність|Контакти
    v1.104.26|Sonoratek LLC

    Documentation

    Концепції, цінність і типові сценарії

    Ласкаво просимо до Ring
    Швидкий довідник
    Початок роботи
    Передумови
    Встановлення
    Валідація першого успіху
    Наступні кроки
    Функції
    Магазин
    Склад і залишки
    Керування вендорами
    Комісії та розрахунки
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Інтеграція платежів
    Публічні пули та DAO-банки
    Інтеграція WayForPay
    Web3 Гаманець
    WalletConductor
    Кредитні винагороди
    Партнерська та реферальна підтримка
    Реферальні коди (Refcodes)
    NFT Exhibition Marketplace
    Solana NFT Gates
    Система Стейкінга Токенів
    Лабораторія проєкту власника (Owner Project Lab)
    Сутності
    Можливості
    AI Matcher
    Повідомлення
    Завдання Ring
    WebRTC-дзвінки та STUNner TURN
    Ігри з друзями
    Модуль Новин - Цифровий Газетний Досвід
    Блоги учасників
    Сторінки публічного профілю
    Віджети профілю облікового запису
    Ring File Cabinet
    Система Резервування Імен Користувачів
    Науковий редактор
    Notifications
    Push-сповіщення через FCM (Ring)
    Email AI-CRM
    Ring Mailer і RingdomX Mail
    Протокол Tunnel
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Безпека та відповідність
    Консоль адміністратора
    Адмінська Wiki
    Керування через Telegram
    Система локалей
    Мобільний Досвід
    Паттерни Оптимізації Продуктивності
    Приклади
    Швидкий старт
    Базове налаштування
    Білий лейбл
    Користувацьке брендування
    Інтеграція Web3
    Реальні приклади
    Розширені функції
    Кастомізація
    Швидкий старт — ваш перший клон Ring
    Повний посібник налаштування
    Вертикальні пресети (SSOT)
    Ringization playbook
    Брендування
    Теми
    Функції
    Локалізація
    Налаштування токеноміки
    Інтеграція платіжних шлюзів
    Еталонні деплої Ring
    Конфігурація
    Публічні змінні середовища
    Секрети Order Lab
    Project ID WalletConnect (Reown Cloud)
    Підтримувані сервіси
    Вікі NODUS (знання проєкту)
    Плейбук конфігурації
    Web3
    Token launch jurisdictions
    Гаманець
    Поради з безпеки гаманця
    Інтеграції
    Ethereum гаманці (Wagmi v3)
    RingFileBase (API об’єктного сховища)
    Ring CDN (edge RingFileBase)
    Розгортання
    Розгортання на власному сервері
    Vercel
    Docker
    Конфігурація Середовища
    Моніторинг та Аналітика
    Оптимізація продуктивності
    Резервне копіювання і відновлення
    Архітектура
    Data Model
    Security
    Real Time
    Синхронізація discovery після мутацій
    Архітектура PaymentConductor
    Архітектура WalletConductor
    Архітектура News Kingdom
    Бекенд Сервіси
    Інтеграція Firebase
    Розробка
    Ring MCP Server
    OSS і enterprise

    Швидкий вхід (CTO · аудитори · агенти)

    Вітаємо — місія та аудиторії
    Швидкий довідник
    Початок роботи
    Архітектура та Auth.js
    Режими бекенду та БД (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Деплой (Docker · k8s)
    Безпека та відповідність
    ringdom.org — база LegioX
    Код — ліцензія MIT (GitHub)

    Documentation

    Концепції, цінність і типові сценарії

    Ласкаво просимо до Ring
    Швидкий довідник
    Початок роботи
    Передумови
    Встановлення
    Валідація першого успіху
    Наступні кроки
    Функції
    Магазин
    Склад і залишки
    Керування вендорами
    Комісії та розрахунки
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Інтеграція платежів
    Публічні пули та DAO-банки
    Інтеграція WayForPay
    Web3 Гаманець
    WalletConductor
    Кредитні винагороди
    Партнерська та реферальна підтримка
    Реферальні коди (Refcodes)
    NFT Exhibition Marketplace
    Solana NFT Gates
    Система Стейкінга Токенів
    Лабораторія проєкту власника (Owner Project Lab)
    Сутності
    Можливості
    AI Matcher
    Повідомлення
    Завдання Ring
    WebRTC-дзвінки та STUNner TURN
    Ігри з друзями
    Модуль Новин - Цифровий Газетний Досвід
    Блоги учасників
    Сторінки публічного профілю
    Віджети профілю облікового запису
    Ring File Cabinet
    Система Резервування Імен Користувачів
    Науковий редактор
    Notifications
    Push-сповіщення через FCM (Ring)
    Email AI-CRM
    Ring Mailer і RingdomX Mail
    Протокол Tunnel
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Безпека та відповідність
    Консоль адміністратора
    Адмінська Wiki
    Керування через Telegram
    Система локалей
    Мобільний Досвід
    Паттерни Оптимізації Продуктивності
    Приклади
    Швидкий старт
    Базове налаштування
    Білий лейбл
    Користувацьке брендування
    Інтеграція Web3
    Реальні приклади
    Розширені функції
    Кастомізація
    Швидкий старт — ваш перший клон Ring
    Повний посібник налаштування
    Вертикальні пресети (SSOT)
    Ringization playbook
    Брендування
    Теми
    Функції
    Локалізація
    Налаштування токеноміки
    Інтеграція платіжних шлюзів
    Еталонні деплої Ring
    Конфігурація
    Публічні змінні середовища
    Секрети Order Lab
    Project ID WalletConnect (Reown Cloud)
    Підтримувані сервіси
    Вікі NODUS (знання проєкту)
    Плейбук конфігурації
    Web3
    Token launch jurisdictions
    Гаманець
    Поради з безпеки гаманця
    Інтеграції
    Ethereum гаманці (Wagmi v3)
    RingFileBase (API об’єктного сховища)
    Ring CDN (edge RingFileBase)
    Розгортання
    Розгортання на власному сервері
    Vercel
    Docker
    Конфігурація Середовища
    Моніторинг та Аналітика
    Оптимізація продуктивності
    Резервне копіювання і відновлення
    Архітектура
    Data Model
    Security
    Real Time
    Синхронізація discovery після мутацій
    Архітектура PaymentConductor
    Архітектура WalletConductor
    Архітектура News Kingdom
    Бекенд Сервіси
    Інтеграція Firebase
    Розробка
    Ring MCP Server
    OSS і enterprise

    Швидкий вхід (CTO · аудитори · агенти)

    Вітаємо — місія та аудиторії
    Швидкий довідник
    Початок роботи
    Архітектура та Auth.js
    Режими бекенду та БД (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Деплой (Docker · k8s)
    Безпека та відповідність
    ringdom.org — база LegioX
    Код — ліцензія MIT (GitHub)

    Documentation

    Концепції, цінність і типові сценарії

    Ласкаво просимо до Ring
    Швидкий довідник
    Початок роботи
    Передумови
    Встановлення
    Валідація першого успіху
    Наступні кроки
    Функції
    Магазин
    Склад і залишки
    Керування вендорами
    Комісії та розрахунки
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Інтеграція платежів
    Публічні пули та DAO-банки
    Інтеграція WayForPay
    Web3 Гаманець
    WalletConductor
    Кредитні винагороди
    Партнерська та реферальна підтримка
    Реферальні коди (Refcodes)
    NFT Exhibition Marketplace
    Solana NFT Gates
    Система Стейкінга Токенів
    Лабораторія проєкту власника (Owner Project Lab)
    Сутності
    Можливості
    AI Matcher
    Повідомлення
    Завдання Ring
    WebRTC-дзвінки та STUNner TURN
    Ігри з друзями
    Модуль Новин - Цифровий Газетний Досвід
    Блоги учасників
    Сторінки публічного профілю
    Віджети профілю облікового запису
    Ring File Cabinet
    Система Резервування Імен Користувачів
    Науковий редактор
    Notifications
    Push-сповіщення через FCM (Ring)
    Email AI-CRM
    Ring Mailer і RingdomX Mail
    Протокол Tunnel
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Безпека та відповідність
    Консоль адміністратора
    Адмінська Wiki
    Керування через Telegram
    Система локалей
    Мобільний Досвід
    Паттерни Оптимізації Продуктивності
    Приклади
    Швидкий старт
    Базове налаштування
    Білий лейбл
    Користувацьке брендування
    Інтеграція Web3
    Реальні приклади
    Розширені функції
    Кастомізація
    Швидкий старт — ваш перший клон Ring
    Повний посібник налаштування
    Вертикальні пресети (SSOT)
    Ringization playbook
    Брендування
    Теми
    Функції
    Локалізація
    Налаштування токеноміки
    Інтеграція платіжних шлюзів
    Еталонні деплої Ring
    Конфігурація
    Публічні змінні середовища
    Секрети Order Lab
    Project ID WalletConnect (Reown Cloud)
    Підтримувані сервіси
    Вікі NODUS (знання проєкту)
    Плейбук конфігурації
    Web3
    Token launch jurisdictions
    Гаманець
    Поради з безпеки гаманця
    Інтеграції
    Ethereum гаманці (Wagmi v3)
    RingFileBase (API об’єктного сховища)
    Ring CDN (edge RingFileBase)
    Розгортання
    Розгортання на власному сервері
    Vercel
    Docker
    Конфігурація Середовища
    Моніторинг та Аналітика
    Оптимізація продуктивності
    Резервне копіювання і відновлення
    Архітектура
    Data Model
    Security
    Real Time
    Синхронізація discovery після мутацій
    Архітектура PaymentConductor
    Архітектура WalletConductor
    Архітектура News Kingdom
    Бекенд Сервіси
    Інтеграція Firebase
    Розробка
    Ring MCP Server
    OSS і enterprise

    Швидкий вхід (CTO · аудитори · агенти)

    Вітаємо — місія та аудиторії
    Швидкий довідник
    Початок роботи
    Архітектура та Auth.js
    Режими бекенду та БД (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Деплой (Docker · k8s)
    Безпека та відповідність
    ringdom.org — база LegioX
    Код — ліцензія MIT (GitHub)
    Ring Logo

    Loading documentation...

    Preparing Ring content

    Ring Logo

    Loading documentation...

    Preparing Ring content

    Ring Logo

    Loading documentation...

    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).

    Типові сценарії

    • Ваш розробник створює порожню базу й застосовує . Сайт готовий до першого логіну адміна.

    Розкладка web/data

    ШляхПризначення
    data/schema.sqlСплощений SSOT, версія 4.1.0. Створює 109 таблиць public, розширення uuid-ossp, pgcrypto і postgis, а також еталонні сіди
    data/migrations/NNN_*.sqlІнкрементальні зміни, від 001 до 051 у репозиторії сьогодні
    data/migrations/NNN_*.down.sqlОпційний rollback, є для 051
    data/migrations/README.mdПравила додавання міграцій. Прочитайте перед написанням
    data/migrations/EMAIL-CRM-OPS.mdOps-нотатки для таблиць email CRM

    Кожна закомічена пронумерована міграція до 051 уже згорнута в schema.sql. Не програвайте data/migrations/*.sql на порожній базі й ніколи не застосовуйте 001_email_crm_schema.sql: JSONB CRM-таблиці з 009 і 010 її замінили й входять до schema.sql.

    Додаток підключається через , , , , і . Він не читає . Див. .

    Related documentation

    Self-hosted deployment

    Next-step: run the app against the database you just created.

    Docker

    Same-workflow: apply the schema to the compose Postgres container.

    Backend modes and databases

    Prerequisite: why k8s-postgres-fcm needs this schema.

    Community tooling

    See-also: install.sh and the npm db scripts, including the ones that fail today.

    1. Документація
    2. /Початок роботи
    3. /Міграції бази даних

    Оновлено 1 жовт. 2026 р.5 хв прослуховування

    Міграції бази даних

    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).

    Типові сценарії

    • Ваш розробник створює порожню базу й застосовує . Сайт готовий до першого логіну адміна.

    Розкладка web/data

    ШляхПризначення
    data/schema.sqlСплощений SSOT, версія 4.1.0. Створює 109 таблиць public, розширення uuid-ossp, pgcrypto і postgis, а також еталонні сіди
    data/migrations/NNN_*.sqlІнкрементальні зміни, від 001 до 051 у репозиторії сьогодні
    data/migrations/NNN_*.down.sqlОпційний rollback, є для 051
    data/migrations/README.mdПравила додавання міграцій. Прочитайте перед написанням
    data/migrations/EMAIL-CRM-OPS.mdOps-нотатки для таблиць email CRM

    Кожна закомічена пронумерована міграція до 051 уже згорнута в schema.sql. Не програвайте data/migrations/*.sql на порожній базі й ніколи не застосовуйте 001_email_crm_schema.sql: JSONB CRM-таблиці з 009 і 010 її замінили й входять до schema.sql.

    Додаток підключається через , , , , і . Він не читає . Див. .

    Related documentation

    Self-hosted deployment

    Next-step: run the app against the database you just created.

    Docker

    Same-workflow: apply the schema to the compose Postgres container.

    Backend modes and databases

    Prerequisite: why k8s-postgres-fcm needs this schema.

    Community tooling

    See-also: install.sh and the npm db scripts, including the ones that fail today.

    1. Документація
    2. /Початок роботи
    3. /Міграції бази даних

    Оновлено 1 жовт. 2026 р.5 хв прослуховування

    Міграції бази даних

    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).

    Типові сценарії

    • Ваш розробник створює порожню базу й застосовує . Сайт готовий до першого логіну адміна.

    Розкладка web/data

    ШляхПризначення
    data/schema.sqlСплощений SSOT, версія 4.1.0. Створює 109 таблиць public, розширення uuid-ossp, pgcrypto і postgis, а також еталонні сіди
    data/migrations/NNN_*.sqlІнкрементальні зміни, від 001 до 051 у репозиторії сьогодні
    data/migrations/NNN_*.down.sqlОпційний rollback, є для 051
    data/migrations/README.mdПравила додавання міграцій. Прочитайте перед написанням
    data/migrations/EMAIL-CRM-OPS.mdOps-нотатки для таблиць email CRM

    Кожна закомічена пронумерована міграція до 051 уже згорнута в schema.sql. Не програвайте data/migrations/*.sql на порожній базі й ніколи не застосовуйте 001_email_crm_schema.sql: JSONB CRM-таблиці з 009 і 010 її замінили й входять до schema.sql.

    Додаток підключається через , , , , і . Він не читає . Див. .

    Related documentation

    Self-hosted deployment

    Next-step: run the app against the database you just created.

    Docker

    Same-workflow: apply the schema to the compose Postgres container.

    Backend modes and databases

    Prerequisite: why k8s-postgres-fcm needs this schema.

    Community tooling

    See-also: install.sh and the npm db scripts, including the ones that fail today.

    1. Документація
    2. /Початок роботи
    3. /Міграції бази даних

    Оновлено 1 жовт. 2026 р.5 хв прослуховування

    Перший запуск.
    schema.sql
  1. Оновлення платформи. Реліз Ring додає міграцію на кшталт 051_likes_uci_favorites_indexes.sql. Ваш розробник робить бекап, застосовує цей один файл і передеплоює.
  2. Після оновлення щось виглядає неправильно. Міграції 051 і новіші можуть мати відповідний .down.sql, щоб зміну можна було відкотити. Старіші файли ні.
  3. Which schema path applies
    DB_HOST
    DB_PORT
    DB_NAME
    DB_USER
    DB_PASSWORD
    DB_SSL
    DATABASE_URL
    Environment

    Свіжа інсталяція

    1. 1

      Створіть порожню базу

      Наступний крок виконуйте як суперкористувач або власник бази, бо schema.sql створює розширення.

    2. 2

      Застосуйте schema.sql

      Якщо на сервері встановлено PostGIS (наприклад образ postgis/postgis), застосуйте файл як є:

      На звичайному PostgreSQL спочатку приберіть рядок PostGIS. Жодна таблиця не використовує тип PostGIS, тож більше нічого не змінюється:

    3. 3

      Перевірте результат

      Надайте ролі додатка (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.

    Додавання міграції (для контриб'юторів)

    1. 1

      Напишіть наступний пронумерований файл

      Візьміть наступний вільний номер після найвищого файлу в data/migrations/. Зробіть його ідемпотентним (IF NOT EXISTS), запишіть у schema_versions і додайте .down.sql, коли зміну можна відкотити.

    2. 2

      Перезберіть schema.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 з тієї ж причини, що вище.

    Часті запитання

    Impact

    Чи втрачаю я дані, коли схему сплощують знову?

    Ні. Сплощення лише переписує файл schema.sql у репозиторії. Живі бази воно ніколи не чіпає.

    Migration

    Мою базу створено зі старого schema.sql. Які файли мені потрібні?

    Порівняйте SELECT version FROM schema_versions із пронумерованими файлами, потім застосуйте відсутні по порядку після бекапу. Лише деякі файли записують версію (див. «Наявна база» вище), тож за сумніву перевіряйте їхні таблиці. Зверніть увагу: свіжа інсталяція з сьогоднішнього schema.sql показує версії до 045, хоча таблиці та індекси з 046 до 051 уже присутні.

    Ops

    Чому падає CREATE EXTENSION postgis?

    Ваша збірка PostgreSQL не містить PostGIS. Приберіть цей рядок, як показано в кроці 2, або використовуйте образ із PostGIS.

    Перший запуск.
    schema.sql
  4. Оновлення платформи. Реліз Ring додає міграцію на кшталт 051_likes_uci_favorites_indexes.sql. Ваш розробник робить бекап, застосовує цей один файл і передеплоює.
  5. Після оновлення щось виглядає неправильно. Міграції 051 і новіші можуть мати відповідний .down.sql, щоб зміну можна було відкотити. Старіші файли ні.
  6. Which schema path applies
    DB_HOST
    DB_PORT
    DB_NAME
    DB_USER
    DB_PASSWORD
    DB_SSL
    DATABASE_URL
    Environment

    Свіжа інсталяція

    1. 1

      Створіть порожню базу

      Наступний крок виконуйте як суперкористувач або власник бази, бо schema.sql створює розширення.

    2. 2

      Застосуйте schema.sql

      Якщо на сервері встановлено PostGIS (наприклад образ postgis/postgis), застосуйте файл як є:

      На звичайному PostgreSQL спочатку приберіть рядок PostGIS. Жодна таблиця не використовує тип PostGIS, тож більше нічого не змінюється:

    3. 3

      Перевірте результат

      Надайте ролі додатка (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.

    Додавання міграції (для контриб'юторів)

    1. 1

      Напишіть наступний пронумерований файл

      Візьміть наступний вільний номер після найвищого файлу в data/migrations/. Зробіть його ідемпотентним (IF NOT EXISTS), запишіть у schema_versions і додайте .down.sql, коли зміну можна відкотити.

    2. 2

      Перезберіть schema.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 з тієї ж причини, що вище.

    Часті запитання

    Impact

    Чи втрачаю я дані, коли схему сплощують знову?

    Ні. Сплощення лише переписує файл schema.sql у репозиторії. Живі бази воно ніколи не чіпає.

    Migration

    Мою базу створено зі старого schema.sql. Які файли мені потрібні?

    Порівняйте SELECT version FROM schema_versions із пронумерованими файлами, потім застосуйте відсутні по порядку після бекапу. Лише деякі файли записують версію (див. «Наявна база» вище), тож за сумніву перевіряйте їхні таблиці. Зверніть увагу: свіжа інсталяція з сьогоднішнього schema.sql показує версії до 045, хоча таблиці та індекси з 046 до 051 уже присутні.

    Ops

    Чому падає CREATE EXTENSION postgis?

    Ваша збірка PostgreSQL не містить PostGIS. Приберіть цей рядок, як показано в кроці 2, або використовуйте образ із PostGIS.

    Перший запуск.
    schema.sql
  7. Оновлення платформи. Реліз Ring додає міграцію на кшталт 051_likes_uci_favorites_indexes.sql. Ваш розробник робить бекап, застосовує цей один файл і передеплоює.
  8. Після оновлення щось виглядає неправильно. Міграції 051 і новіші можуть мати відповідний .down.sql, щоб зміну можна було відкотити. Старіші файли ні.
  9. Which schema path applies
    DB_HOST
    DB_PORT
    DB_NAME
    DB_USER
    DB_PASSWORD
    DB_SSL
    DATABASE_URL
    Environment

    Свіжа інсталяція

    1. 1

      Створіть порожню базу

      Наступний крок виконуйте як суперкористувач або власник бази, бо schema.sql створює розширення.

    2. 2

      Застосуйте schema.sql

      Якщо на сервері встановлено PostGIS (наприклад образ postgis/postgis), застосуйте файл як є:

      На звичайному PostgreSQL спочатку приберіть рядок PostGIS. Жодна таблиця не використовує тип PostGIS, тож більше нічого не змінюється:

    3. 3

      Перевірте результат

      Надайте ролі додатка (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.

    Додавання міграції (для контриб'юторів)

    1. 1

      Напишіть наступний пронумерований файл

      Візьміть наступний вільний номер після найвищого файлу в data/migrations/. Зробіть його ідемпотентним (IF NOT EXISTS), запишіть у schema_versions і додайте .down.sql, коли зміну можна відкотити.

    2. 2

      Перезберіть schema.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 з тієї ж причини, що вище.

    Часті запитання

    Impact

    Чи втрачаю я дані, коли схему сплощують знову?

    Ні. Сплощення лише переписує файл schema.sql у репозиторії. Живі бази воно ніколи не чіпає.

    Migration

    Мою базу створено зі старого schema.sql. Які файли мені потрібні?

    Порівняйте SELECT version FROM schema_versions із пронумерованими файлами, потім застосуйте відсутні по порядку після бекапу. Лише деякі файли записують версію (див. «Наявна база» вище), тож за сумніву перевіряйте їхні таблиці. Зверніть увагу: свіжа інсталяція з сьогоднішнього schema.sql показує версії до 045, хоча таблиці та індекси з 046 до 051 уже присутні.

    Ops

    Чому падає CREATE EXTENSION postgis?

    Ваша збірка PostgreSQL не містить PostGIS. Приберіть цей рядок, як показано в кроці 2, або використовуйте образ із PostGIS.