Экспорт данных трекинга
По мере работы трекеров их данные отправляются и сохраняются в базе данных платформы Navixy, поэтому вы можете просматривать поездки в мониторинге и формировать отчёты о поездках. Однако могут возникнуть ситуации, когда необходимо выгрузить всю записанную информацию трекинга в виде геолокационных точек. Это обычно требуется для анализа данных в спорных случаях. В таком случае вы можете запросить такую информацию напрямую из базы данных.
Этот метод позволяет получить данные более детально и «технически», чем вы видите в мониторинге. Но важно понимать, что для появления в базе данных данные должны фактически быть переданы трекером, и восстановить полностью отсутствующие в мониторинге поездки таким образом не получится.
Вам потребуется прямой доступ к базе данных MySQL чтобы вытащить данные трекинга, а это означает, что ваши клиенты не имеют прав на эту операцию, и только техники с доступом к серверу обладают необходимой авторизацией.
Данные трекинга хранятся в tracking базе данных. В зависимости от того, когда и как была развёрнута ваша инстанция платформы, возможны два принципиально разных способа организации структуры базы данных.
Структура с bucket'ами. В этом случае данные трекинга разбиваются на несколько bucket'ов (по умолчанию 16).
Файловая структура, где каждому трекеру соответствует отдельная таблица, названная по его IMEI.
Тип организации данных, который вы используете, легко проверить, просто открыв директорию хранения файлов базы данных — например, в Linux это по умолчанию /var/lib/mysql/tracking . Внутри вы найдёте либо разбиенные файлы с именами вида bucket_****.ibd, либо множество ibd и frm файлов, названных по IMEI устройств.
Нет обычного способа изменить базу данных с файловой структуры на структуру с bucket'ами или наоборот, так как это потребовало бы перестроения всей базы. После развёртывания база продолжает существовать в своей исходной структуре.
Структура с bucket'ами
Это современный тип организации базы данных, где для оптимизации производительности данные хранятся не в отдельных таблицах для каждого трекера, а в так называемых bucket'ах. По умолчанию их 16, трекеры распределяются по ним случайным образом. У каждого трекера есть свой storage_id, по которому мы можем найти нужный bucket.
Для запроса данных вам нужен IMEI трекера (в этом примере мы используем условный IMEI 987654321012345) и внутренний идентификатор устройства, называемый source_id.
Узнайте source_id и storage_id с помощью этого запроса:
SELECT storage_id, source_id FROM google.sources WHERE source_imei='987654321012345'; Получившийся storage_id начинается с номера bucket'а — от 1 до 16. Например, storage_id=201000 означает bucket_2 и storage_id=1301000 означает bucket_13.
В следующем запросе нам понадобятся и номер bucket'а, и source_id. Этим запросом мы запрашиваем данные трекинга за нужный период и выгружаем их в CSV-файл.
Обратите внимание:
мы используем
source_idиbucketномер которого был найден предыдущим запросом.get_time— это время записи данных устройством, оно указано в UTC+0, независимо от часового пояса учётной записи пользователя.У MySQL должны быть права на запись в папку, указанную в запросе.
Сам SQL-запрос выглядит следующим образом:
Для Windows путь выглядит примерно так:
Файловая структура
Это более старый способ организации структуры базы данных, который тем не менее остаётся актуальным для многих инстанций Navixy с многолетней историей.
Чтобы запросить данные в этом случае, вам нужен только IMEI трекера (в этом примере мы используем условный IMEI 987654321012345).
Обратите внимание:
get_time— это время записи данных устройством, оно указано в UTC+0, независимо от часового пояса учётной записи пользователя.У MySQL должны быть права на запись в папку, указанную в запросе.
SQL-запрос выглядит следующим образом:
Для Windows путь выглядит примерно так:
Вывод данных
Указанный выше SQL-запрос сгенерирует CSV-файл, содержащий все точки трекинга, записанные для устройства.
Этот файл можно импортировать в Excel или использовать в любой внутренней разработке.
Последнее обновление
Это было полезно?