Balancer:
Есть идея по сабжу.
- Отказываемся от хранения цифровых идентификаторов в БД вообще.
Я еще не до конца разобрался в структуре сервака. Сейчас его изучаю. Поэтому прощу прощения если че.
Выресовывается вопрос.
Как используются идентификаторы пользователей. Это что что-бы получить пользователя, идет обращение к ID в базе. А затем по этому ID ищится ник и работа по никам производится?
Если так то это вообще берд полный. Как я понимаю в идеале нужно получать ID, login, ID клана, Имя клана и ник персонажа тогда когда игрок входит на сервер. И всегда его помнить пока он не выйдет.
Тогда не нужно будет думать что использовать для доступа. Можно использовать как ник так и ID. Если конечно его нужно тут использовать. А не читать из базы его каждый раз.
Как не крути, а по ID доступ в разы быстрее если по этому полю построен индекс. Так как тогда все это число помещается в индексе если конечно оно в разумных переделах.А если делать поиск по строкам. То тогда это медленее будет. Потому что тогда в индексе не будет отиндексировано все слово ,а только часть его. И поиск будет медлеенее.
Balancer:
- Принадлежность вещей, петов и т.п. игрокам прописывается прямо не цифровым индексом, а именем игрока
Если сервер помнит ID пользователя. То тогда об этом вообще думать не стоит.
Balancer:
(напомню, имена у нас уникальные, скорость поиска по индексированной строке в mysql не ниже, чем поиск по индексированным числовым значениям).
Заблуждаешся. Медленее. На маленьких базах этого не будет заметно. Но когда записей много тогда это очень заметно.
Balancer:
- Идентификаторы кланов задаются также их именами
Об этом выше писал.
Balancer:
- Идентифиакторы раздаются с минимального значения при каждом старте сервера каждому новому создаваемому объекту и в БД не хранятся
А как тогда обращаться к мобам или каким-то вещам в квестах?
Например какой-нить квест пойди найди то-то. И дотронься. Это так для примера.
Balancer:
Плюсы:
- не будет больше бардака с ID
Бардак с ID потому что надо делать ID Auto Increment. Тогда будет все ок.
Balancer:
- не потребуется сжатие БД
В этом я сомневаюсь. Все равно придется. Например после удаления пользователя.
Balancer:
- проще будет работать визуально с БД (скажем, сразу видишь, какому игроку принадлежит предмет)
Пользователи и админы вообще не должны лазать в базу что-бы произвести какие-то манипуляции. Все эти манипуляции должны делаться через интерфейсы в игре либо WEB интерфейсы.
Balancer:
Минусы:
- Усложняется переименование игрока (апдейт всех таблиц) и кланов
- Требуется переписывание структуры нынешних БД
...
Жду отзывов от других разработчиков. Не хотелось бы ради одного этого эксперимента опять "отслаиваться" в L2J Balancer, а внесение столь серьёзной доработки в L2JRU или l2j.sf требует согласования с другими участниками
Я не считаю что это действиельно необходимо. Как таковое нужно просто помнить ID и все. И этого делать не придется.
Тяжела жизнь программиста: радость находки своего бага всегда омрачает осознание собственной тупости...