Тема: Питання про кількість таблиць для сайта-гри (PHP+MySQL)
Вітаю!
Розробляю сайт для гри в текстові квести специфічного внутрішнього формату. На стороні сервера використовую PHP і MySQL.
Коли користувач вибирає "квест" і починає нову гру, для цієї ігрової сесії генерується "оточення". Розмір оточення досить великий - близько 5000-10000 елементів. Кожен елемент має набір параметрів/властивостей/станів. Різних параметрів є кілька десятків, хоча для кожного окремого елемента актуальні лише 5-10 з них. "Вага" одного елемента (сума "розмірів" полів) очікується на рівні 100-500 байт.
Структура оточення ієрархічна. Умовний центральний вузел розпадається на кілька великих гілок ("локацій"), всередині яких іде подальше дріблення.
Всі параметри можуть змінюватися, тобто "постійні" параметри звідси вже виділені в окрему "таблицю шаблонів/класів".
На кожному етапі користувачеві відправляється інформація про одну з "локацій" (500-1000 елементів з усіма властивостями і структурою). Користувач вибирає деяку дію і посилає її на сервер. Сервер обробляє дію, оновлює стан деяких елементів (як правило, 10-15 штук, можлива зміна ієрархії). Після цього користувач знову отримує нову порцію інформації.
Сама ігрова сесія не лімітована в часі і може тривати протягом багатьох днів (а то і місяців). Якщо користувач починає нову партію, старе "оточення" видаляється.
Зберігати поточне "оточення" планую в базі даних. Відповідно, у мене виникає питання про структуру бази. Поки бачу два принципових варіанти:
1. Для кожного користувача створювати окрему таблицю, в якій зберігати елементи поточної ігрової сесії.
2. Тримати одну велику таблицю для всіх користувачів, прикладаючи до елементів id користувача або ігрової сесії.
Варіант зберігати всю структуру в одному полі (XML?) відкинув через великі витрати на парсинг. Хіба що для сейвів можна подумати ...
Пошукав в мережі подібні проблеми - майже всюди радять реалізовувати другий варіант. Але тут ніби як специфіка штовхає до першого. По-перше, відразу багато записів на кожну ігрову сесію. По-друге, ігрова сесія окремого гравця взагалі ніяк не пов'язана з іншими. По-третє, обробка оточення на кожному етапі йде досить інтенсивна, робиться вибірка з близько 10% елементів.
Прошу допомогти порадою. До якого варіанту краще схилятися?
І взагалі, наскільки життєздатний план описанної частини з урахуванням оцінок?
Може, підкажіть якісь підводні камні, яких я поки не бачу.
Дякую!