Code Monkey home page Code Monkey logo

mordorlogs's Introduction

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. Сортировка второго индекса. Данные отсортированы по дате/времени.

mordorlogs's People

Contributors

rinatnamazov avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.