Как написать bzip2-архиватор на Python: разбираем преобразование Барроуза-Уилера

Привет! Я Рома, бэкендер-питонист в KTS . Это вторая статья в моем цикле об алгоритме архивации bzip2 . Первую можно прочитать здесь , но для понимания сегодняшней темы она необязательна. Ниже я разберу преобразование Барроуза-Уилера — ключевой этап сжатия bzip2.

https://habr.com/ru/companies/kts/articles/937554/

#архиваторы #архивация #сжатие_данных #алгоритмы #bzip2архиватор #bzip2 #bwt

Как написать bzip2-архиватор на Python: разбираем преобразование Барроуза-Уилера

Привет! Я Рома, бэкендер-питонист в KTS . Это вторая статья в моем цикле об алгоритме архивации bzip2 . Первую можно прочитать здесь , но для понимания сегодняшней темы она необязательна. Ниже я...

Хабр

Как написать bzip2-архиватор на Python: разбираем преобразование Барроуза-Уилера

Привет! Я Рома, бэкендер-питонист в KTS . Это вторая статья в моем цикле об алгоритме архивации bzip2 . Первую можно прочитать здесь , но для понимания сегодняшней темы она необязательна. Ниже я разберу преобразование Барроуза-Уилера — ключевой этап сжатия bzip2.

https://habr.com/ru/companies/kts/articles/937554/

#архиваторы #архивация #сжатие_данных #алгоритмы #bzip2архиватор #bzip2 #bwt

Как написать bzip2-архиватор на Python: разбираем преобразование Барроуза-Уилера

Привет! Я Рома, бэкендер-питонист в KTS . Это вторая статья в моем цикле об алгоритме архивации bzip2 . Первую можно прочитать здесь , но для понимания сегодняшней темы она необязательна. Ниже я...

Хабр

CJON (Compact JSON-like Object Notation) v1.1

1. Назначение CJON – это легковесный, компактный и человекочитаемый формат, предназначенный для использования в условиях ограниченных каналов связи, таких как SMS, DTMF, и низкоскоростная радиосвязь. Его основное назначение – передача структурированных телеметрических или управляющих данных в случаях, когда традиционный JSON слишком объёмен, а бинарные форматы непрактичны или плохо читаемы. 2. Области применения • Дистанционная телеметрия для сельского хозяйства и промышленного оборудования • Аварийные сообщения и тревоги • Автоматизация в условиях низкоскоростной или оффлайн-связи • Мобильные устройства, передающие структурированные данные через SMS или голосовую связь • Передача данных по DTMF через GSM-сети

https://habr.com/ru/articles/933632/

#json #mobile #сжатие_данных #хранение_данных #хранение_информации #передача #передача_информации #передача_без_искажений #датчики #датчик_влажности_почвы

CJON (Compact JSON-like Object Notation) v1.1

С каждым витком развития информационных технологий мы все больше зависим от них. Неблагоприятные события и масштабные инциденты в области связи, кибербезопасности и т.п. обнажают нашу зависимость от...

Хабр

Как мы научили PostgreSQL автоматически создавать партиции: опыт Nexign Nord

Программисты, ежедневно решающие задачи оптимизации запросов и управления большими объемами данных, неизбежно сталкиваются с необходимостью освоения новых методов организации данных. Поэтому сегодня предлагаем поговорить об автоматизации партиционирования как об эффективном варианте решения.

https://habr.com/ru/companies/nexign/articles/930790/

#sql #партиционирование #партиция #партиции #базы_данных #сжатие_данных #архивирование_данных #субпартиции

Как мы научили PostgreSQL автоматически создавать партиции: опыт Nexign Nord

Программисты, ежедневно решающие задачи оптимизации запросов и управления большими объемами данных, неизбежно сталкиваются с необходимостью освоения новых методов организации данных. Поэтому сегодня...

Хабр

[Перевод] Как уменьшить размер модели Power BI на 90%

Вы когда-нибудь задумывались, что делает Power BI таким быстрым и мощным с точки зрения производительности? Настолько мощным, что он выполняет сложные вычисления над миллионами строк за мгновение. В этой статье мы подробно рассмотрим, что находится «под капотом» Power BI: как данные хранятся, сжимаются, запрашиваются и, наконец, возвращаются в отчёт. После прочтения, надеюсь, у вас появится лучшее понимание того, что происходит в фоновом режиме, и вы сможете оценить важность создания оптимальной модели данных для достижения максимальной производительности с использованием движка Power BI.

https://habr.com/ru/companies/otus/articles/926904/

#devops #power_bi #Оптимизация_данных #базы_данных #big_data #сжатие_данных #clickhouse

Как уменьшить размер модели Power BI на 90%

Вы когда-нибудь задумывались, что делает Power BI таким быстрым и мощным с точки зрения производительности? Настолько мощным, что он выполняет сложные вычисления над миллионами строк за мгновение. В...

Хабр

Повышаем эффективность хранения данных до 300 раз с помощью таблиц SCD-2

Всем привет, меня зовут Василий. С 2021 года работаю в роли инженера данных в Х5 Tech, успел за это время познакомиться с несколькими интересными проектами и подходами в области обработки данных, об одном из которых пойдет речь далее. В этой статье расскажу о том, как можно повысить эффективность хранения данных за счет уменьшения их дублирования. Разберем, что из себя представляют Slowly Changing Dimensions-2 (далее SCD-2) таблицы и самостоятельно реализуем на PySpark алгоритм сохранения данных в них. Попутно поговорим о том, как находить изменения в любой таблице, даже если отсутствуют поля для выбора изменившихся записей, и научимся получать из созданной SCD-2 таблицы срезы на требуемую дату в прошлом.

https://habr.com/ru/companies/X5Tech/articles/911716/

#SCD #spark #python #обработка_данных #хранение_данных #нахождение_дельты #история_изменений #алгоритм_нахождения_изменений #pyspark #сжатие_данных

Повышаем эффективность хранения данных до 300 раз с помощью таблиц SCD-2

Всем привет, меня зовут Василий. С 2021 года работаю в роли инженера данных, а в 2024 году присоединился к одной из продуктовых команд в Х5 Tech. За это время успел познакомиться с несколькими...

Хабр

[Перевод] Уменьшаем базу данных в 2000 раз при помощи Rust (завершение)

Сериализация По сути, мы получили косвенную базу данных в памяти. Далее нам нужно сериализовать её, чтобы проверить, как interning влияет на её постоянное хранение. Кроме того, сериализация — это важный шаг для проверки реальности заявленной экономии места. И, наконец, это ещё одна возможность для дальнейшего сжатия данных. В Rust для сериализации стандартно используется крейт serde , который мы уже использовали для импортирования входных данных в JSON. Serde изначально имеет поддержку множества форматов благодаря крейтам расширений, поэтому я решил попробовать несколько из них.

https://habr.com/ru/articles/890250/

#gzip #сериализация #десериализация #json #сжатие_данных

Уменьшаем базу данных в 2000 раз при помощи Rust (завершение)

Первая часть Сериализация По сути, мы получили косвенную базу данных в памяти. Далее нам нужно сериализовать её, чтобы проверить, как interning влияет на её постоянное хранение. Кроме того,...

Хабр

[Перевод] Сжатые структуры данных

Введение Несколько месяцев назад в поисках идей по ускорению кода я изучал множество научных статей по computer science. Не буду притворяться, что хорошо их понимал, но меня не пугает непонятное, и я готов признать своё невежество 1 . Я обнаружил статью, написанную пятнадцать лет назад 2 , в которой было множество новых для меня концепций. Мне никак не удавалось в них разобраться. Что же делать дальше? Можно искать другие статьи, чтобы они заполнили мои пробелы. Это рискованное предприятие, потому что они могут запутать ещё больше, но избежать этого нельзя. Я нашёл статью с нужной структурой данных, в которой упоминался исходный код с веб-сайта. Код был написан на C++, а я работаю на Rust, но решил, что всё равно стоит на него взглянуть. Однако зайдя на сайт, я не обнаружил там ресурс, поэтому я написал владельцу веб-сайта, который оказался преподавателем computer science. Этот преподаватель ( Гонсало Наварро ) очень тепло меня принял и сразу же ответил мне 3 4 . И только в процессе общения с ним я осознал, что видел его фамилию на множестве статей в этой области. Оказалось, я познакомился с одним из специалистов мирового уровня в области сжатых структур данных (succinct data structure). Невежество может завести очень далеко. Что же такое сжатые структуры данных? Если вы изучали в последние десятилетия computer science, то могли сталкиваться с ними, но мне не доводилось встречаться с ними в процессе работы программистом, а если и доводилось, то я сразу же о них забыл. Но я считаю, что эти структуры данных обладают потрясающими свойствами. Все мы пользуемся массивами и хэш-таблицами 5 , популярны также различные деревья. Нам не нужно полностью понимать их устройство, чтобы эффективно пользоваться их свойствами. А теперь я задаюсь вопросом, почему же люди не используют сжатые структуры данных чаще. Я решил, что стоит немного о них рассказать.

https://habr.com/ru/companies/ruvds/articles/890232/

#xml #json #деревья #abstract_syntax_tree #ast #днк #сжатие_данных #ruvds_переводы

Сжатые структуры данных

Введение Несколько месяцев назад в поисках идей по ускорению кода я изучал множество научных статей по computer science. Не буду притворяться, что хорошо их понимал, но меня не пугает непонятное, и я...

Хабр

[Перевод] Как уместить поиск по 30 тысячам слов в 64 КБ ОЗУ

Как уместить словарь размером 250 КБ в 64 КБ ОЗУ с возможностью выполнения быстрого поиска? Для справки: даже современные методики сжатия наподобие gzip -9 не могут сжать этот файл до размера меньше 85 КБ. В 1970-х Дуглас Макилрой столкнулся с этой непростой задачей при реализации проверки правописания для Unix в AT&T. Из-за ограничений компьютера PDP-11 весь словарь должен был умещаться всего в 64 КБ ОЗУ. Кажется, подобную задачу решить невозможно. Вместо того, чтобы использовать стандартные методики сжатия, Дуглас воспользовался преимуществами свойств данных, разработав алгоритм сжатия, превышавший теоретический минимум сжатия всего на 0,03 бита. И по сей день этот рекорд остаётся непревзойдённым. История spell в Unix — это не только любопытный исторический факт. Это мастер-класс по проектированию в условиях жёстких ограничений: анализа первооснов задачи, применения математических наблюдений и проектирования изящных решений, работающих в условиях строгого дефицита ресурсов.

https://habr.com/ru/articles/882952/

#spell #код_голомба #хэштаблицы #сжатие_данных #проверка_правописания #теория_информации

Как уместить поиск по 30 тысячам слов в 64 КБ ОЗУ

Как уместить словарь размером 250 КБ в 64 КБ ОЗУ с возможностью выполнения быстрого поиска? Для справки: даже современные методики сжатия наподобие gzip -9 не могут сжать этот файл до размера меньше...

Хабр

[Перевод] Кодирование UTF-8 без ветвления

Можно ли кодировать UTF-8 без ветвлений? Да . Вопрос Натан Голдбаум задал в чате Recurse вопрос: Я знаю, как декодировать UTF-8 с помощью битовой математики и таблиц поиска (см. https://github.com/skeeto/branchless-utf8 ), но если я хочу преобразовать кодовую точку UTF-8, то можно ли сделать ли это без ветвлений? Для начала, можно ли как-то написать эту функцию на C, которая возвращает количество байтов, необходимых для хранения байтов UTF-8 кодовой точки, без использования ветвления? Или для этого потребуется огромная таблица поиска?

https://habr.com/ru/companies/mkb/articles/878068/

#кодирование #UTF8 #алгоритмы #сжатие_данных

GitHub - skeeto/branchless-utf8: Branchless UTF-8 decoder

Branchless UTF-8 decoder. Contribute to skeeto/branchless-utf8 development by creating an account on GitHub.

GitHub