Pull to refresh

Comments 17

И в чем могут быть преимущества от использования DuckDB вместо классической MySQL 8 на простом VDS-хостинге?

Автор здесь не описывает, однако DuckDB поставляется в виде библиотек и cli. И вот cli - штука крутая, анализировал ей наборы данных в миллионы записей.

Задачи по типу "собрать айдишки из csv/экселя и выявить дубликаты" спокойно решается прямо из DuckDB: SELECT * FROM 'data.csv' WHERE id IN (SELECT id FROM 'data.csv' GROUP BY id HAVING COUNT(*) > 1). Или другими запросами, у вас по-сути на руках sqlite с фичами pg и не только. При работе с экселем потребуется расширение, которое входит в состав duckdb из коробки.

Спасибо что подметили. Да, у DuckDB удобный CLI я через него работал на VDS.

Добрый день.

Разные инструменты под разные задачи.

MySQL про OLTP нагрузку, а DuckDB про OLAP нагрузку.

Также DuckDB позиционируется как инструмент для Data Lake/ Data LakeHouse, потому что он позволяет вынести compute за рамки storage.

DuckDB – это просто лучший инструмент для взаимодействия с данными.

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

Технари так не делают, это стиль рекламщиков

Это кликбейт, прошу понять и простить 🙂

Очередная суперхренорезка, которая умеется все сразу и ничего по настоящему в отдельности?

В чем польза от продукта, ну кроме как лабораторных опытов для гиков в стиле "ой, а еще оно в гамаке и стоя умеет"?

Ну почему же "ничего". Как минимум, этим продуктом можно заменить sqlite. Я бы не сказал, что sqlite ничего не умеет. Мозилла например в своем браузере sqlite использует, а могли бы duckdb

Не совсем понятно, к чему конкретно претензия

И Android не поддерживается, если я не ошибаюсь ?

Для начала возьмём ранее использовавшийся файлик с поездками такси и создадим из него таблицу:

CREATE TABLE yellow_tripdata_2024_01
SELECT * FROM read_parquet('https://d37ci6vzurychx.cloudfront.net/trip-data/yellow_tripdata_2024-01.parquet'

Так и не понял, как данный код сохраняет данные parquet файла в локальной базе

Что-то сложнее COUNT(*) пробовали запускать? У меня вот как-то не сложилось. Натравил на директорию с parquet-файлами. Нужно было воспроизвести логику с DENSE_RANK и GROUP BY, запрос все время вылетал по памяти. Один из вариантов запросов для решения той же проблемы наоборот стал вечно крутиться. Пришлось обрабатывать все файлы в цикле и склеивать каждый новый файл с результатами обработки всех предыдущих. Особо деталей не приведу, так как было давно, но суть в том, что была надежда просто написать SQL и получить результат, но магии не случилось, поэтому пришлось писать код.

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

Как вариант – это сохранить .parquet файлы внутри DuckDB как таблицы и уже считать при помощи его движка. Иначе никак.

Ну или просто закидать проблему оперативкой.

Я пытался как-то прочитать файл .csv в котором было несколько миллиардов строк (дамп PG таблицы) и через простое чтение тоже хватал ошибки по памяти, но а когда загрузил в DuckDB эту информацию, то запросы работали. Не скажу что быстро, но зато работали и я смог разбить файл на нужные мне партиции.

Вот я почему-то думал, что там планировщик хитрее и не будет предварительно запихивать все в оперативную память

Честно говоря, в таком случае я даже не знаю, зачем мне был бы нужен DuckDB, обошелся бы polars

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

Как вариант – это сохранить .parquet файлы внутри DuckDB как таблицы и уже считать при помощи его движка. Иначе никак.

Ну или просто закидать проблему оперативкой.

Я пытался как-то прочитать файл .csv в котором было несколько миллиардов строк (дамп PG таблицы) и через простое чтение тоже хватал ошибки по памяти, но а когда загрузил в DuckDB эту информацию, то запросы работали. Не скажу что быстро, но зато работали и я смог разбить файл на нужные мне партиции.

Для не знакомых DuckDB можете пояснить, что такое "загрузил в DuckDB"? - это вытянул данные к себе на локальную машину, и паркеты стали обрабатываться с локального диска, в памяти локальной машины ?

Sign up to leave a comment.

Articles