TGViewer
Сохранёнки программиста Сохранёнки программиста @prog_stuff · 6.53K subscribers
Post #2819 936
Автор финско-английского словаря Taskusanakirja рассказал, как сжал 3-гигабайтную SQLite-базу до 10-мегабайтного бинарника.

Проблема была в финском языке — он агглютинативный, у одного слова может быть больше ста форм с разными окончаниями. Trie, который использовался для поиска по префиксам, справлялся с 400 тысячами слов (~50 МБ), но отказался масштабироваться на десятки миллионов форм. Временный костыль — SQLite с полнотекстовым поиском на 3 ГБ, с которым нужно было таскать трёхгигабайтную загрузку.

Решение — finite state transducer (FST) из Rust-крейта fst от BurntSushi. FST, в отличие от trie, сжимает и суффиксы тоже, а для финского с его повторяющимися окончаниями это идеально. Итог: 10 МБ вместо 3 ГБ, сжатие в 300 раз, и весь словарь теперь помещается в один статический бинарник.

Полная версия: https://til.andrew-quinn.me/posts/replacing-a-3-gb-sqlite-database-with-a-7-mb-fst-finite-state-trandsucer-binary/

@prog_stuff
  • 👍 2
More from @prog_stuff
  1. Sep 21, 2026Как выбрать равновероятную выборку из потока неизвестной длины Интерактивный разбор объясн…
  2. Sep 21, 2026Как LMAX вынесла торговую логику в один поток Разбор архитектуры LMAX показывает, почему м…
  3. Sep 20, 2026Как процессор предсказывает ветвления Псевдотранскрипт доклада объясняет тему с нуля. Конв…
  4. Sep 20, 2026Почему одни движки регулярных выражений зависают, а другие нет Обстоятельная статья Расса…
  5. Sep 19, 2026Как проверять изменения без риска для всего трафика Компактный разбор о снижении риска при…
  6. Sep 19, 2026Как собрать модель пиковой нагрузки из боевой телеметрии Обстоятельный гайд о замене выгру…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →