# Настройка базы данных PhotoPlaces ## Требования - Docker и Docker Compose - PostgreSQL 15+ с PostGIS 3.3+ ## Быстрый старт с Docker 1. Убедитесь, что установлен Docker и Docker Compose 2. Перейдите в директорию `database/` 3. Запустите контейнер: ```bash docker-compose up -d ``` 4. База данных будет доступна по адресу: - Хост: `localhost` - Порт: `5432` - База: `photoplaces` - Пользователь: `photoplaces_user` - Пароль: `photoplaces_password` ## Ручная установка PostgreSQL с PostGIS ### Для Windows: 1. Скачайте и установите PostgreSQL с официального сайта 2. Установите расширение PostGIS через Stack Builder 3. Создайте базу данных: ```sql CREATE DATABASE photoplaces; ``` 4. Подключитесь к базе и выполните: ```sql CREATE EXTENSION postgis; ``` 5. Выполните SQL скрипт инициализации: ```bash psql -U postgres -d photoplaces -f init.sql ``` ### Для Linux (Ubuntu/Debian): ```bash # Установка PostgreSQL и PostGIS sudo apt update sudo apt install postgresql postgresql-contrib postgis # Создание базы данных sudo -u postgres createdb photoplaces # Включение PostGIS sudo -u postgres psql -d photoplaces -c "CREATE EXTENSION postgis;" # Выполнение скрипта инициализации sudo -u postgres psql -d photoplaces -f init.sql ``` ## Структура базы данных ### Основные таблицы: - `users` - Пользователи системы с ролями - `places` - Места для фотосессий с геоданными - `place_images` - Изображения мест - `services` - Услуги фотографов - `bookings` - Бронирования ### Геоданные: - Используется тип `GEOGRAPHY(Point, 4326)` для хранения координат - Координаты хранятся в формате WGS84 (широта/долгота) - Для работы с геоданными используется расширение PostGIS ## Миграции Для управления миграциями базы данных будет использоваться: - `node-pg-migrate` или подобный инструмент - Миграции будут храниться в `database/migrations/` ## Резервное копирование ```bash # Создание бэкапа pg_dump -U photoplaces_user -d photoplaces -f backup.sql # Восстановление из бэкапа psql -U photoplaces_user -d photoplaces -f backup.sql ``` ## Мониторинг и оптимизация - Используйте `EXPLAIN ANALYZE` для анализа запросов - Регулярно делайте `VACUUM ANALYZE` для обслуживания БД - Настройте мониторинг через pgAdmin или аналогичные инструменты ## Безопасность - Никогда не используйте дефолтные пароли в продакшене - Настройте SSL соединение с базой данных - Ограничьте доступ к БД только с trusted источников - Регулярно обновляйте PostgreSQL и PostGIS