База данных
Эта статья является черновиком.
Вы можете помочь проекту, дополнив её: исправить неточности, добавить информацию, улучшить форматирование.
База данных — в контексте серверов World of Warcraft на ядре TrinityCore, это набор взаимосвязанных баз данных, которые хранят всю информацию, необходимую для работы игрового мира. Понимание их структуры и взаимодействия — ключевой навык для разработчика и администратора сервера.
Общая архитектура
Серверное программное обеспечение TrinityCore использует **четыре основные базы данных**, каждая из которых отвечает за определённый логический слой:
Важно: Все четыре базы данных являются обязательными для запуска и стабильной работы сервера.
Слои данных
| База данных | Основное назначение | Ключевая таблица (пример) | Как часто меняется? | Зависимости |
|---|---|---|---|---|
| Auth | Управление учётными записями, безопасность, доступ к реалмам. | `account` | Редко (при регистрации, входе) | Независима |
| Characters | Хранение всего прогресса персонажей (инвентарь, квесты, навыки). | `characters` | Постоянно (во время игры) | Зависит от **Auth** (связь по `account.id`) |
| World | Статический и конфигурационный контент мира (NPC, предметы, квесты, заклинания). | `creature_template` | Редко (при обновлении контента) | Независима |
| Hotfixes | «Горячие» правки данных клиента (DBC/DB2), применяемые без перезапуска. | `hotfix_data` | По необходимости (баланс, исправления) | Зависит от **World** (переопределяет данные) |
Детальное описание баз данных
| Девиз | "{{{Девиз}}}" |
|---|---|
| Тип | Вики-энциклопедия |
| Назначение | Аутентификация, учётные записи и безопасность |
| Язык | SQL |
| Дата основания | Базовая структура TrinityCore |
| Владелец | Сообщество |
| Автор | Энтузиасты сообщества |
| Сайт | wowlib.ru |
База данных auth предназначена для управления учётными записями, аутентификацией, доступом к игровым мирам (реалмам), системой банов, логированием и ролевым управлением доступом (RBAC).
Основные разделы:
- Учётные записи: `account`, `account_access`, `account_banned`, `account_muted`.
- Battle.net учётки: `battlenet_accounts`, `battlenet_account_banned`.
- Безопасность и доступ: `rbac_permissions`, `realmcharacters`, `realmlist`.
- Логирование и служебные данные: `logs`, `logs_ip_actions`, `uptime`.
→ Перейти к полному списку таблиц Auth
| Девиз | "{{{Девиз}}}" |
|---|---|
| Тип | Вики-энциклопедия |
| Назначение | Динамические данные персонажей и прогресс |
| Язык | SQL |
| Дата основания | Базовая структура TrinityCore |
| Владелец | Сообщество |
| Автор | Энтузиасты сообщества |
| Сайт | wowlib.ru |
База данных characters предназначена для хранения динамических данных персонажей и их прогресса. Содержит информацию о персонажах, их характеристиках, инвентаре, экипировке, достижениях, квестах, репутациях, навыках, питомцах, почте, гильдиях и других игровых состояниях, изменяющихся в процессе игры.
Основные разделы:
- Персонажи: `characters`, `character_account_data`, `character_achievement`, `character_inventory`.
- Квесты и репутация: `character_queststatus`, `character_reputation`.
- Навыки и заклинания: `character_skills`, `character_spell`, `character_talent`.
- Социальные структуры: `guild`, `guild_member`, `groups`.
- Почта и аукцион: `mail`, `auctionhouse`.
- Экземпляры предметов: `item_instance`.
→ Перейти к полному списку таблиц Characters
| Девиз | "{{{Девиз}}}" |
|---|---|
| Тип | Вики-энциклопедия |
| Назначение | Статический контент игрового мира |
| Язык | SQL |
| Дата основания | Базовая структура TrinityCore |
| Владелец | Сообщество |
| Автор | Энтузиасты сообщества |
| Сайт | wowlib.ru |
База данных world предназначена для хранения статического и конфигурационного контента игрового мира. Содержит данные о картах и зонах, существах и игровых объектах, квестах, заклинаниях, событиях, сценариях, фазировании, транспорте, луте и правилах взаимодействия мира с игроками.
Основные разделы:
- Существа (NPC): `creature_template`, `creature`, `creature_loot_template`.
- Игровые объекты: `gameobject_template`, `gameobject`, `gameobject_loot_template`.
- Заклинания: `spell_template`, `spell_proc`, `spell_script_names`.
- Квесты: `quest_template`, `quest_poi`, `quest_mail_sender`.
- Системы мира: `game_event`, `pool_template`, `conditions`.
→ Перейти к полному списку таблиц World
| Девиз | "{{{Девиз}}}" |
|---|---|
| Тип | Вики-энциклопедия |
| Назначение | Динамические обновления данных клиента (DBC/DB2) |
| Язык | SQL |
| Дата основания | Базовая структура TrinityCore |
| Владелец | Сообщество |
| Автор | Энтузиасты сообщества |
| Сайт | wowlib.ru |
База данных hotfixes предназначена для хранения данных, загружаемых клиентом динамически без необходимости обновления клиента или перезапуска сервера. Содержит hotfix-записи DBC/DB2-таблиц (баланс, параметры заклинаний, предметов, NPC, квестов и интерфейса).
Основные разделы:
- Данные hotfix-обновлений: `hotfix_data`, `hotfix_blob`.
- Контент, подверженный правкам: Таблицы, дублирующие структуру DBC/DB2 файлов (достижения, предметы, заклинания, существа и т.д.).
- Локализация: Множество таблиц с суффиксом `_locale` для хранения переведённых строк.
→ Перейти к полному списку таблиц Hotfixes
Типичные сценарии работы
Как взаимодействуют базы при входе игрока?
- Игрок вводит логин/парть → сервер проверяет их в таблице `account` базы **Auth**.
- После успешной аутентификации игрок выбирает реалм из `realmlist` (тоже в **Auth**).
- Игрок выбирает персонажа → сервер загружает его данные (координаты, инвентарь, квесты) из **Characters**.
- Для отображения мира (NPC, предметы, квестовые цели) сервер использует статические данные из **World**.
- Если для данного клиента есть активные «горячие» правки, они подгружаются из **Hotfixes** и имеют приоритет над данными из **World**.
Где искать...
- **Параметры заклинания «Огненный шар»?** → `spell_template` в **World** (или соответствующие таблицы в **Hotfixes**, если правка активна).
- **Предмет в инвентаре конкретного персонажа?** → `item_instance` и `character_inventory` в **Characters**.
- **Шаблон NPC «Анахорет»?** → `creature_template` в **World**.
- **Права доступа GM-аккаунта?** → `account_access` и `rbac_permissions` в **Auth**.
Практические советы по работе с базами
Примечание: Перед любыми правками в рабочих базах данных обязательно создавайте резервные копии (бэкапы).
Часто используемые SQL-запросы
SQL
{{{1|-- SQL запрос}}}
SQL
{{{1|-- SQL запрос}}}
SQL
{{{1|-- SQL запрос}}}
Типичные проблемы
1. **Персонаж не загружается, ошибка в логах.** → Проверить целостность данных в таблицах `characters`, `character_inventory` в **Characters**.
2. **NPC отсутствует в мире, хотя запись в `creature_template` есть.** → Проверить таблицу `creature` в **World** (спавн) или фазирование (`phase`).
3. **Игрок не может зайти, пишет «неверный пароль».** → Проверить соответствие данных в `account` (Auth) и настройки хэширования в `authserver.conf`.
4. **Изменения в `creature_template` не применяются.** → Убедиться, что нет активной записи, переопределяющей этот `entry` в **Hotfixes**.
См. также
- Установка сервера — как первоначально настроить все базы данных.
- SQL для начинающих — основы работы с запросами.
- Типичные ошибки в базах данных — разбор частых проблем и их решений.
index.php?title=Категория:База данных index.php?title=Категория:Документация index.php?title=Категория:Руководства