mordorlogs

command module
v0.0.0-...-40b9be5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 7, 2020 License: GPL-3.0 Imports: 16 Imported by: 0

README

MordorRpBot

Телеграм бот для получения IP адреса и информации об устройстве игрока по его нику на мобильном SA-MP сервере Mordor RP.

Использование: Прислать никнейм игрока. В случае если записей несколько: никнейм игрока и номер записи.

Оригинальные логи хранились в текстовых файлах в крайне неудобном формате и информация об 379453 аккаунтах занимало физически около 9,78 ГБ, а поиск по ним был крайне проблематичной затеей. Было принято решение написать свою быструю на чтение и поиск базу данных специально для этих логов. После преобразования база стала весить всего лишь 1,34 ГБ.

Структура нашей базы:

  • first_index.bin: Содержит никнейм игрока и смещение до second_index.bin. Благодаря одинаковому размеру всех элементов, можно быстро переходить к любому элементу. А из-за того что ники отсортированы, становится возможным использовать бинарный поиск позволяющий искать ник с минимальным количеством итераций.
  • second_index.bin: Так как один никнейм может содержать несколько данных, данный файл содержит количество этих данных и смещений до них в data.bin, позволяет быстро найти все связанные с ником данные.
  • data.bin: Содержит сами данные.

Больше подробностей искать в исходном коде.

Преобразование логов в нашу базу:

Преобразование происходило в четыре этапа:

  1. Парсинг логов из папок/файлов и их запись как есть в базу. На данный момент база не позволяет производить бинарный поиск и нахождение всех данных связанных с ником.
  2. Оптимизация первого и второго индекса. Размер базы будет немного уменьшен.
  3. Сортировка никнеймов в первом индексе. Уже можно применить быстрый поиск.
  4. Сортировка второго индекса. Данные отсортированы по дате/времени.

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL