Интересный текст про сжатие данных и эволюцию DuckDB в этом направлении [1]․ Если вкратце, то текст о том как разработчики DuckDB организовали хранение данных улучшив за полтора года его примерно в 3 раза.
Для CSV файла в 17ГБ в версии 0.2.8 от июля 2021 г. данные занимали 15.3ГБ, а текущей версии они занимают порядка 4.8ГБ.
Для того чтобы обеспечить это сжатие разработчики использовали новый алгоритм Chimp [2] для сжатия чисел с плавающей запятой.
Это ниже чем сжатие алгоритмами Zstd или Snappy, но, важно помнить что сжатие в DuckDB обеспечивается практически без потери производительности.
Это важно поскольку DuckDB - это весьма перспективная SQL OLAP база данных, предназначенная для оптимизации аналитических расчётов.
Сам подход такого сжатия, ориентированного на быструю декомпрессию данных, весьма любопытен и наверняка переносим на другие продукты, многие из которых также используют похожий алгоритм Gorilla [3], на базе которого и построен алгоритм Chimp.
В обоих случаях числа сжимаются через специально подобранные операции основанные на XOR и повторяемости значений в битах чисел с плавающей запятой.
И, чтобы два раза не вставать, туда же в тему интересных исследований про данные, статья прошлого года в VLDB - DBOS: A DBMS-oriented Operating System [4] о том что вполне возможно построить операционную систему на основе высокопроизводительной базы данных. Подход очень оригинальный, это не просто data-shell, оболочка для работы с OS словно с базой данных и не data API для работы с функциями и настройками ОС через интерфейс API, а прямо таки полноценная ОС. А оно, тем временем, развивается [5] и может быть когда-то появится.
Ссылки:
[1] https://duckdb.org/2022/10/28/lightweight-compression.html
[2] https://www.vldb.org/pvldb/vol15/p3058-liakos.pdf
[3] https://www.vldb.org/pvldb/vol8/p1816-teller.pdf
[4] https://www.vldb.org/pvldb/vol15/p21-skiadopoulos.pdf
[5] https://dbos-project.github.io/
#dbms #duckdb #olap #dwh
Для CSV файла в 17ГБ в версии 0.2.8 от июля 2021 г. данные занимали 15.3ГБ, а текущей версии они занимают порядка 4.8ГБ.
Для того чтобы обеспечить это сжатие разработчики использовали новый алгоритм Chimp [2] для сжатия чисел с плавающей запятой.
Это ниже чем сжатие алгоритмами Zstd или Snappy, но, важно помнить что сжатие в DuckDB обеспечивается практически без потери производительности.
Это важно поскольку DuckDB - это весьма перспективная SQL OLAP база данных, предназначенная для оптимизации аналитических расчётов.
Сам подход такого сжатия, ориентированного на быструю декомпрессию данных, весьма любопытен и наверняка переносим на другие продукты, многие из которых также используют похожий алгоритм Gorilla [3], на базе которого и построен алгоритм Chimp.
В обоих случаях числа сжимаются через специально подобранные операции основанные на XOR и повторяемости значений в битах чисел с плавающей запятой.
И, чтобы два раза не вставать, туда же в тему интересных исследований про данные, статья прошлого года в VLDB - DBOS: A DBMS-oriented Operating System [4] о том что вполне возможно построить операционную систему на основе высокопроизводительной базы данных. Подход очень оригинальный, это не просто data-shell, оболочка для работы с OS словно с базой данных и не data API для работы с функциями и настройками ОС через интерфейс API, а прямо таки полноценная ОС. А оно, тем временем, развивается [5] и может быть когда-то появится.
Ссылки:
[1] https://duckdb.org/2022/10/28/lightweight-compression.html
[2] https://www.vldb.org/pvldb/vol15/p3058-liakos.pdf
[3] https://www.vldb.org/pvldb/vol8/p1816-teller.pdf
[4] https://www.vldb.org/pvldb/vol15/p21-skiadopoulos.pdf
[5] https://dbos-project.github.io/
#dbms #duckdb #olap #dwh