Телеграм бот для получения IP адреса и информации об устройстве игрока по его нику на мобильном SA-MP сервере Mordor RP.
Использование: Прислать никнейм игрока. В случае если записей несколько: никнейм игрока и номер записи.
Оригинальные логи хранились в текстовых файлах в крайне неудобном формате и информация об 379453 аккаунтах занимало физически около 9,78 ГБ, а поиск по ним был крайне проблематичной затеей. Было принято решение написать свою быструю на чтение и поиск базу данных специально для этих логов. После преобразования база стала весить всего лишь 1,34 ГБ.
first_index.bin
: Содержит никнейм игрока и смещение доsecond_index.bin
. Благодаря одинаковому размеру всех элементов, можно быстро переходить к любому элементу. А из-за того что ники отсортированы, становится возможным использовать бинарный поиск позволяющий искать ник с минимальным количеством итераций.second_index.bin
: Так как один никнейм может содержать несколько данных, данный файл содержит количество этих данных и смещений до них вdata.bin
, позволяет быстро найти все связанные с ником данные.data.bin
: Содержит сами данные.
Больше подробностей искать в исходном коде.
Преобразование происходило в четыре этапа:
- Парсинг логов из папок/файлов и их запись как есть в базу. На данный момент база не позволяет производить бинарный поиск и нахождение всех данных связанных с ником.
- Оптимизация первого и второго индекса. Размер базы будет немного уменьшен.
- Сортировка никнеймов в первом индексе. Уже можно применить быстрый поиск.
- Сортировка второго индекса. Данные отсортированы по дате/времени.