Сжать государственную VIN-базу с 1,5 ГБ до 21 МБ? Реально! Разработчик рассказал как
Новости
Нет, это не мем
74 открытий485 показов
Команда разработчиков офлайн-декодера VIN — Corgi — столкнулась с типичной проблемой государственных данных.
База VPIC от National Highway Traffic Safety Administration весила 1,5 ГБ. Для серверов это нормально, но для браузеров, edge-платформ и мобильных устройств — почти приговор.
У такой базы целый ворох проблем. От долгого скачивания и съедания чрезмерной памяти, до поломки serverless-запусков и невозможности работать с приложениями, которые должны запускаться «везде».
При этом именно VPIC считается официальным и самым полным источником данных для расшифровки VIN в США.
Анализ вместо «магической оптимизации»
Первое, что сделали разработчики — это разобрали базу по частям. С помощью SQLite-инструментов они посмотрели, какие таблицы реально занимают место.
Оказалось, что почти 850 МБ приходилось на одну таблицу, которая хранила соответствие кодов производителей и модельных годов.
Ключевой вывод: эти данные можно вычислять на лету из других таблиц. Таблицу удалили и база сразу похудела больше чем наполовину.
Дальше команда пошла по тому же пути: не сжимать, а выкидывать лишнее. Из базы убрали шаблоны и справочники, которые нужны регуляторам, но почти никогда не используются в прикладных VIN-декодерах.
Оптимизация под реальное использование
Следующий шаг — чистка «мертвых» данных. После удаления части таблиц, в базе остались записи, на которые больше никто не ссылался. Их тоже убрали.
Затем команда пересобрала индексы. Оригинальная база оптимизирована под регулярные обновления — ведь государство ее постоянно дополняет. Corgi же использует базу только для чтения.
Это позволило удалить лишние индексы и создать новые, заточенные под самые частые запросы при декодировании VIN.
И финальный штрих — VACUUM, чтобы SQLite физически пересобрал файл без мусора.
Результат: минус гигабайты, плюс скорость
В итоге размер базы сократился с 1,5 ГБ до 64 МБ в несжатом виде. После gzip — всего 21 МБ. При этом декодирование стало даже быстрее: таблицы меньше, индексы точнее, а лишних данных нет.
Оптимизированную базу упаковали в open-source библиотеку Corgi, которая работает офлайн и одинаково подходит для сервера, браузера и edge-окружений.
74 открытий485 показов


