- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Переиграть и победить: как анализировать конкурентов для продвижения сайта
С помощью Ahrefs
Александр Шестаков
В 2023 году Одноклассники пресекли более 9 млн подозрительных входов в учетные записи
И выявили более 7 млн подозрительных пользователей
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Добрый день, товарищи.
Помогите новичку спроектировать базу заявок в бой и боев.
Немного конкретики: бои могут быть два вида - одиночные и групповые(от трех до 30 чел. в бою).
Что я делаю? Создаю одну таблицу заявок с 34 столбцами(ид заявки, количество человек макс в заявке, текущее количество человек в заявке, время создания, и 30 столбцов с идами игроков). Соответственно, получается, что если создали заявку на 13 человек(или столько человек успели вступить), то остальные столбцы будут пустовать. Айс?
С проектированием боя еще сложнее. Бой полем 15*15. Идея не делать координаты поле боя в таблице не выходит - кроме игроков в бое имеются препятствия, вызываемые существа. Конечно, всем обьектам можно прописать просто ид боя, а не вписывать иды обьектов в таблицу боя. Насколько разумно делать таблицу боев с 15*15(координаты поля, где в каждой клетке или 0(пусто), 1(препятствие), ид юзера или ид обьекта)+ид боя столбцов?
с 34 столбцами(ид заявки, количество человек макс в заявке, текущее количество человек в заявке, время создания, и 30 столбцов с идами игроков). Соответственно, получается, что если создали заявку на 13 человек(или столько человек успели вступить), то остальные столбцы будут пустовать. Айс?
???
Делается через таблицу many-many id_user id_battle (или какой там бой.. по англицки будет.), при необходимости доп поля (время входа юзера в бой, время выхода, итд)
в таблице боёв - инфа исключительно о бое.
Бой полем 15*15.
как вариант - длинная "простыня" (на примере многоходового боя):
id_battle id_tick (тик/ход) type (пользователь, препятствие итд) id_obj (ид-
шник объекта типа type), доп инфо (статы-жизни, action=что сделал, направление=куда смотрит) итд
Так, спасибо. Пойду изучать.
Если я вас правильно понял:
Значит, у нас будет две таблицы: заявки - id_user id_zayavka. И заявки_параметр - id_zayavka, parametr(макс. кол. чел., время действия заявки). ?
Насчет боя:
Будет таблица боев: id_battle, id_tick(ход), id_user, action(что сделал, если ударил - ид_юзера, если сходил или оделся и т.д. - параметр какой-нибудь), value.
Делаем еще таблицу: id_battle, id_user, status(сходил/не сходил), xp.
Но если бой на время, которое и формирует ход. Каждый ход по минуте(за которую все должны успеть сходить один раз). Создаем еще таблицу боев, где id_battle, max_users, max_sxodilo, timer.
Как-то так?
id_battle, id_tick(ход), id_user,
это primary key
каждый юзер может сходить за конкретный ход в конкретном бою только 1 раз.
Инфу о том, что пользователь сходил - записываем в эту таблицу.
Если юзер 356 за 3-й ход в 155-м бою не сходил, то строчки с 155/3/356 не будет.
Если же сходил - в этой строчке должна лежать вся инфа о его ходе.
Таймер можно разместить в таблице боёв или вообще рассчитывать его (есть датавремя начала боя, есть 1 ход в минуту, есть текущее время).
p.s. зачем хранить max_shodilo (в смысле, что это даёт)?
Max_shodilo - если равно max_users, то значит все сходили и можно начинать новый ход, не дожидаясь окончания времени хода.
Для таких вещей лучше использовать nosql базы, вроде mongodb... в противном случае, бд начинает тормозить уже при нескольких десятков одновременных боёв.
Да не, если все норм сделать, должно держать. При нескольких десятках(30) одновременных боев(с 15 чел в каждом) около 45 000 записей будет в таблице боев-ходов при достижении всеми боями 100-го раунда, это немного. Да и вряд ли, такие масштабы будут, я так, практикуюсь, не более. Законченные бои , конечно, будут выгружаться в архив. Но я теоретик - новичок, утверждать особо не могу. Практикуюсь вот.
"45 000 записей" - это всего 30 боев... а если историю хранить, то получатся таблицы с многими миллионами записей. Но при грамотном программировании, потом не сложно будет перенести на другую систему хранения. Пишите пока на том, что знаете. Многие проекты так и умирают недожив до рабочего релиза... :)
а если историю хранить, то получатся таблицы с многими миллионами записей.
Текущие бои в Memory хранить, архив - в MyISAM (меняться они вряд ли будут) или в InnoDB. Для начала - даже на шареде пойдёт.
Пишите пока на том, что знаете. Многие проекты так и умирают недожив до рабочего релиза...
Обнадёживающе :D
При нескольких десятках(30) одновременных боев(с 15 чел в каждом) около 45 000 записей будет в таблице
Это 450 активных игроков онлайн.. много это или мало (в смысле, завышенное или заниженное число) - Вам виднее.
Добрый день, товарищи.
Помогите новичку спроектировать базу заявок в бой и боев.
Немного конкретики: бои могут быть два вида - одиночные и групповые(от трех до 30 чел. в бою).
Что я делаю? Создаю одну таблицу заявок с 34 столбцами(ид заявки, количество человек макс в заявке, текущее количество человек в заявке, время создания, и 30 столбцов с идами игроков). Соответственно, получается, что если создали заявку на 13 человек(или столько человек успели вступить), то остальные столбцы будут пустовать. Айс?
Не вполне по канонам, но для Вашей ситуации - очень даже айс. Один бой - одна запись, размер записи ограничен исходно, все куда надо влезет.
С проектированием боя еще сложнее. Бой полем 15*15. Идея не делать координаты поле боя в таблице не выходит - кроме игроков в бое имеются препятствия, вызываемые существа. Конечно, всем обьектам можно прописать просто ид боя, а не вписывать иды обьектов в таблицу боя. Насколько разумно делать таблицу боев с 15*15(координаты поля, где в каждой клетке или 0(пусто), 1(препятствие), ид юзера или ид обьекта)+ид боя столбцов?
Под бой вообще нет смысла разводить данные на ячейки. Сделайте базу данных из ИД, ТЕКСТ и в текст складываете сериализованные данные о бое.
???
Делается через таблицу many-many id_user id_battle (или какой там бой.. по англицки будет.), при необходимости доп поля (время входа юзера в бой, время выхода, итд)
в таблице боёв - инфа исключительно о бое.
Мы бы согласились с Вами в большинстве случаев, но не в этом. По сути у ТС в задаче нет ничего, для чего нужно SQL с одной стороны. С другой стороны при EAV решении будет нехилое раздувание таблицы, при этом высоконагруженной таблицы. А ведь nosql решение и/или пусть даже sql решение но без eav - позволило бы обойтись без этого.