Обновить

Как DuckDB обрабатывает 1 ТБ данных менее чем за 30 секунд

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели6.7K
Всего голосов 5: ↑3 и ↓2+1
Комментарии7

Комментарии 7

Вот дураки, на картинке же видно, что он мягкий.

И круглый. Диск ведь.

Запросы картинками такое себе.

Olap быстр при определенных условиях, да. Даже (иногда) при disk io.

Исследования тут не увидел кроме детского удивления

Рекордная скорость передачи информации на малые расстояния была достигнута сегодня в офисе одной из компьютерных фирм при падении со стеллажа высотой в 1 (один) метр коробки, содержавшей 20 накопителей Seagate Barracuda 300 GB.

Общий объем переданной на расстояние 1 (одного) метра информации составил 300х20х8=48 000 гигабит;
Время передачи составило t=sqrt(2h/g)=0,4 секунды.

Таким образом, средняя скорость передачи информации составила 120 терабит/с !

Как DuckDB обрабатывает 1 ТБ данных менее чем за 30 секунд

Как и любая другая DB по индексам. Добавьте вывод EXPLAIN в статью.

Эээ какие индексы, тут же нет никакой фильтрации и джойнов.

Прикол статьи скорее всего вот в чём: если посмотреть скрипт, которым генерируются случайные данные, то видно, что там 10 полей (одно из которых - строка случайной длины), а селектятся 2 поля. Поскольку DuckDB - колоночная база, а Parquet - колоночный формат, то из этих терабайт читаются с диска, по моим прикидкам, 5-10%. А когда включили сортировку по дате, то и столбец с датой почти перестал читаться с диска: там повторяющиеся значения, столбец хранится компактно: записывают само значение и количество повторений. И остался единственный полноценно читаемый столбец. А если она достаточно умная, то, поняв, что все значения в загруженной странице суммируемого столбца относятся к одному ключу агрегации, она векторно сложит идущие подряд значения в памяти.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации