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

Этот проект на выходные начался с изучения репозитория открытых данных сети общественного транспорта Парижа, содержащего различные API для выполнения в реальном времени запросов отправления транспорта , изменений в графике движения и так далее. Моё внимание привлёк раздел о многократном использовании данных , потому что в нём были приведены внешние проекты, использующие эти открытые данные. В частности веб-сайт статуса сети RATP предоставляет удобный интерфейс для визуализации истории нарушений на линиях движения метро, сети экспрессов/поездов и трамваев. Обычный день нарушений на ratpstatus.fr . В репозитории GitHub сайта ratpstatus.fr содержатся все файлы JSON , запрашиваемые из open-data API каждые две минуты. Данные сохраняются там уже почти год. Репозиторий с 188 тысячами коммитов и более чем 10 ГБ собранных данных всего лишь в одном последнем коммите (измерено при помощи git clone --depth=1) — это определённо интересный выбор для реализации базы данных! Уточню, что в этом посте я не собираюсь критиковать эту систему. Веб-сайт статуса сети RATP — превосходный веб-сайт, мгновенно и стабильно предоставляющий полезную информацию без обычного сегодня раздувания веб-сайтов. [И нет, сайт не написан на Rust. Веб-сайт на PHP тоже может быть невероятно быстрым!] Тем не менее, размер базы данных (10 ГБ) заставил меня призадуматься: а можно ли сжать её лучше, потратив на это приемлемое количество времени (скажем выходные)? В этом подробном посте я расскажу, как использовал шаблон проектирования interning в Rust, чтобы сжать этот датасет в две тысячи раз! Мы посмотрим, как лучше структурировать сам интернер, как настроить схему данных для оптимальной работы с ним и как сделать так, чтобы сериализация использовала interning наилучшим образом. Если у вас в хранилище накопилось множество файлов JSON, то вам стоит прочитать эту статью!

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

#json #десериализация #сериализация #парсинг #схема_данных

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

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

Хабр

Как связать натуральные ключи с суррогатным в Anchor Modeling

Хранить значения натуральных ключей необходимо, потому что они связывают хранимые данные с реальным миром (внешними классификаторами, реестрами и т.п.), и с ними работают бизнес-пользователи: в выпадающих списках, отчетах и дашбордах. Но в методологии Anchor Modeling для связи таблиц используются только суррогатные ключи, не подверженные изменениям, и это правильно. Поэтому нужно хранить связь натуральных ключей с суррогатным ключом, предпочтительно формата UUIDv7 . Как же это сделать в методологии Anchor Modeling? Получить ответ

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

#бизнесключ #натуральный_ключ #суррогатный_ключ #UUIDv7 #схема_данных #историчность #высоконагруженный #идентификатор #Anchor_Modeling #Data_Vault

Как связать натуральные ключи с суррогатным в Anchor Modeling

Хранить значения натуральных ключей необходимо, потому что они связывают хранимые данные с реальным миром (внешними классификаторами, реестрами и т.п.), и с ними работают бизнес-пользователи: в...

Хабр