NetImperia: Все сообщения за 17 Августа 2005 года

 
ПнВтСрЧтПтСбВс
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

NetImperia

новичок
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 и все. И этого делать не придется.
Тяжела жизнь программиста: радость находки своего бага всегда омрачает осознание собственной тупости...  

NetImperia

новичок
awarm:
Внутри игры используются уникальные идентификаторы, присваиваемые каждому объекту. Внутри сервера эти идентификаторы соотносятся соответственно с типом объекта и его параметрами. Так что действительно хранить эти ID в базе совсем не обязательно. Более сервер никак к идентификаторам не привязан. т.е. если тебе нужен аккаунт, делаешь выборку по login + hash(pass), при этом получаешь внутрибазовый id пользователя, по которому дольше идет поиск связанных записей.
 


Я правильно понимаю? Те ID что у нас в базе и те что используются в самой игре разные?
Если да то в игре используются числовые ID или строки? Как игровые ID выглядят?


awarm:
Насколько я знаю, индексы строятся на основе хешей значений. Соответственно при поиске из значения получается его хеш и дальше идет уже поиск по числу. Но как только у нас строковая переменная оказывается неиндексированной, вот тут-то и идет зверское падение скорости (на больших таблицах)
 


Да правильно. Но тут есть нюанс. Если это строка то хэш делается не по всей строке. А только по ее части.
Тяжела жизнь программиста: радость находки своего бага всегда омрачает осознание собственной тупости...  

NetImperia

новичок
[quote|Balancer:]
zabbix:
>Пользователи и админы вообще не должны лазать в базу что-бы произвести какие-то манипуляции. Все эти манипуляции должны делаться через интерфейсы в игре либо WEB интерфейсы.

Прекрасно, но ты такой интерфейс сделаешь? Тогда вопрос отпадёт. Пока же все задачи приходится решать через phpMyAdmin или из консоли :)
 


Дык я уже начал делать. Только мне так никто и не сказал что в первую очередь надо редактировать? Желательно по пунктам. Что-бы я так и шол по пунктам...
Тяжела жизнь программиста: радость находки своего бага всегда омрачает осознание собственной тупости...  

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru