Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2014, 08:49   #1
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Допустим для игры имеется Бд, допустим MySQL.
Например около 30 таблиц разного размера и сложности.
В некоторой части таблиц производится постоянное пополнение данных путем добавления новых строк в таблице, например id постоянно увеличивается, и при этом часть id предыдущих данных не нужны, а часть нужны, но если их просто перенести, то сслылочные данные не будут верны.

Как ограничивать размер бд в таком случае?
То сесть нужно все равно изменять ссылки, но это практически нереально
Как организовать БД довольно сложной по экономике и механике игры?

Начал разрабатывать игрушку многопользовательскую с сложной экономикой и возможно механикой.

Так вот сложность организации таблиц бд достаточно велика.
Часть данных будет постоянно пополнятся, а часть будет неактуальна.

Как же организовать такую структуру таблиц и как их модифицировать для уменьшения размера с учетом того что, при при перезаписи в неактуальные строки бд новых данных поменяется их так скажем id, и ссылку тоже необходимо менять, а это очень геморно учитывая сложность задачи.

Последний раз редактировалось Stilet; 17.02.2014 в 09:06.
Illusiony вне форума Ответить с цитированием
Старый 17.02.2014, 09:04   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
с учетом того что, при при перезаписи в неактуальные строки бд новых данных
Что-т я не понял почему первичный ключ (если речь идет о нем) должен меняться при редактировании таблицы?
Цитата:
для уменьшения размера
Без геморроя уменьшаться умеют только файловые СУБД (и то не все). Как правило в 90% БД разношерстных их пополнение данными и удаление не приводит к уменьшению размера файла базы - и в этом есть своя целесообразность. В этом случае приходится делать backup-restore. Хотя в случае с Сиквелом или Лотусом этого можно избежать - у него есть инструмент поджимания файлов.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.02.2014, 21:08   #3
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

- Денормализация;
- Ключ архивирования;
- Таблица шттщвию
Виталий Желтяков вне форума Ответить с цитированием
Старый 17.02.2014, 21:58   #4
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Лучше б эту тему закрыли, а не вот эту http://programmersforum.ru/showthread.php?t=255284
Ну хоть эту оставьте одну единственную.
Прошу помощи по вопросу вот этой темы http://programmersforum.ru/showthread.php?t=255284
Illusiony вне форума Ответить с цитированием
Старый 17.02.2014, 22:33   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Я думаю темы вообще можно объединить.
Вообще очень странные вопросы. Вроде как занимались проектированием и работой с бд , а вопросы задаёте ну уровне кулкацкира. Используйте нормальные формы, выделите сущности, определите связи, постройте логику по совокупности данных о сущности, которые вполне вероятно будут браться из разных таблиц, и большая часть отношений между этим и таблицами будут клиент-справочник.

Модуль например - это справочная сущность, их количество у Вас сильно меняться вряд ли будет. Игрок - другая сущность, но уже клиентская, т.к. постоянно растёт и меняется (баны всякие и разбаны) и приложение всегда будет проверять этот список, а каждый игрок будет постоянно проверять свои данные (читать характеристики хотя бы). А вот таблица модулей_у_игроков будет уже сводная - в ней будут ссылки на игрока и на модуль.
Возможно, свойства/фичи для модулей это тоже будет отдельная таблица, справочник с конкретными свойствами каждой фичи, и тогда понадобится таблица один ко многим связывающая модули с включенными в модуль фичами.

О денормализации и прочих оптимизациях стоит думать, но сперва должно написать логику, а не гнаться за тем, что даже пощупать нельзя без рабочей системы, хотя бы на бумаге, а уж строки/байтики да размер базы это просто неграмотное отношение, т.к. преждевременная оптимизация - в целом плоха и это пора уже знать. Менять ссылки, данные и подобные вещи - путь к краху, данные трогать вне бизнес-логики попросту опасно.

Последний раз редактировалось phomm; 17.02.2014 в 22:39.
phomm вне форума Ответить с цитированием
Старый 17.02.2014, 23:25   #6
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Да большое спасибо за ответ.
Я никогда не занимался базами данных серьезно и достаточной сложности.
Могли бы посоветовать литературу по этому поводу или блоги с примерами.
Illusiony вне форума Ответить с цитированием
Старый 18.02.2014, 16:04   #7
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Абсолютно согласен с phomm, не стоит на начальном этапе заниматься преждевременной оптимизацией, как не крутите в процессе разработке у Вас еще много что измениться и оценивать объёмы БД на стадии идеи очень тяжело.
P.S.
Как пример, на сервере я храню небольшую статистику по своему приложению, по селекту он из всей таблицы формирует необходимые данные. Сперва создал просто таблицу без индексов, в результате за год накопилось 1.5милиона записей, запрос стал выполняться 4 сек., сделал индексы, поправил запросы, получил 0.1 сек. На текущий момент меня это вполне устраивает, нужно будет быстрее - сделаю кэш и кучу - кучу других вариантов оптимизации.
dampirik вне форума Ответить с цитированием
Старый 19.02.2014, 20:56   #8
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Стал потихоньку разрабатывать структуру таблиц Бд. У меня нету опыта в этом плане. Немного почитал о связях в таблицах, но полного понимания нету пока что. Начну с простого.
Нужна таблица с данными авторизации, премиальных данных, данных навыков игроков.
В принце пе все эти данные могут быть в 1 таблице, но частота обращений к ним разная и они содержат смысловые различия в использовании данных.
Так вот если из 1 таблицы сделать 3 связанных таблицы, как такая структура называется и и как ее реально создать на MySql.
1) таблица авторизация
2) Премиум
3) навыки
В каждой таблице первичный ключ (в виде числа) в первом столбце, второй столбец у каждой логин.
В таком случае в этих таблицах эти 2 поля первых одинаковые.
Но поиск будет по логину, это нормально?

Опишите эту ситуацию пожалуйста.
Illusiony вне форума Ответить с цитированием
Старый 19.02.2014, 22:23   #9
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Прочитайте про FOREIGN KEY
waleri вне форума Ответить с цитированием
Старый 20.02.2014, 20:09   #10
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Если, допустим сравнивать 1 большую таблицу и 3 небольших связанных таблицы.
В чем разница в плане производительности и ресурсов? В связанных таблицах запрос реально идет в каждую отдельную таблицу или это лишь для удобства?

Для таких связей используется только innoDB. Но если имеются сложные условия связи, которые затрудняют реализацию связей или делают это невозможным, то использование связанных таблиц непригодно, да и к тому же для некоторых задач MyIsam быстрее.
Возможно ли комбинированное использование данных типов таблиц?

Последний раз редактировалось Illusiony; 20.02.2014 в 20:15.
Illusiony вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение достаточно сложной задачи... El_Bint0 Помощь студентам 6 11.02.2015 09:15
Ноутбук работает не достаточно быстро как хотелось бы! RudiDee Компьютерное железо 4 16.12.2012 16:36
Как правильно организовывать лог-файл в многопоточных приложениях? Человек_Борща Общие вопросы Delphi 1 26.11.2011 15:08
Delphi.Как организовывать чтение из файла и отображение его в списке-ListBoxе. FireflyJuillet Помощь студентам 0 20.05.2010 00:54
символьные данные сложной структуры и имя массива как параметр функции EkaterinaA Помощь студентам 3 22.02.2009 21:36