Представлен выпуск СУБД DuckDB 0.10.0, сочетающей такие свойства SQLite, как компактность, возможность подключения в форме встраиваемой библиотеки, хранение БД в одном файле и удобный CLI-интерфейс, со средствами и оптимизациями для выполнения аналитических запросов, охватывающих значительную часть хранимых данных, например, выполняющих агрегирование всего содержимого таблиц или слияние нескольких больших таблиц. Код проекта распространяется под лицензией MIT. Разработка пока находится на стадии формирования экспериментальных выпусков, так как формат хранилища пока не стабилизирован и меняется от версии к версии...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=60621
Разработчики из поисковика DuckDuckGo?
Нет. "DuckDB is maintained by Dr. Mark Raasveldt & Prof. Dr. Hannes Mühleisen. DuckDB’s initial development took place at the Database Architectures Group at the Centrum Wiskunde & Informatica (CWI) in Amsterdam, The Netherland"
>Prof. Dr. Hannes Mühleisen.Интересно конечно и профессор и доктор сразу.
А для вас докто - это врач, да?
Да.
Интересно, он сам код писал или припахал студентов "за оценки" чтобы нагло стырить результаты их работы и выдать за своё?
Расскажи историю, а кто из русских преподователей так делает? Ты ведь с непроста так написал.
И зачем это нужно, когда есть clickhouse-local, который 1) умеет примерно все (без шуток) 2) делает это с несравнимо более хорошей производительностью
...Ты серьёзно предлагаешь БД для хранения гигабайтов данных использовать вместо склайта?
Т.е. не подходит для хранения сотен терабайт данных, как скулайт? Вообще, я заметил, что мало кто может конкурировать со скулайтом в этом, в том числе, это касается большинства проприетарных бд.
кликхаус - это не только БД для хранения гигабайтов данных. это еще и инструмент (который может работать без сервера в clickhouse-local), который позволяет делать сложные запросы читать (да и писать) примерно из любого формата в данных (от файла с CSV до postgresql и parquet на s3) и делать это в общем случае быстрее любых других инструментов.
Кликхаус проприетарь, сабж нет
Эмм, кликхаус под apache, сабж под mit
он умеет все исключительно на бумаге. А на деле умеет только сегфолтиться на любом ровном месте.
Или просто не работать.Не говоря уже о разнице между базкой для time-value записей и базой для аналитики - из первой никто и никогда никаких сложных запросов делать не будет.
> он умеет все исключительно на бумаге. А на деле умеет только сегфолтиться на любом ровном месте.
> Или просто не работать.ога, конечно
> Не говоря уже о разнице между базкой для time-value записей и базой для аналитики - из первой никто и никогда никаких сложных запросов делать не будет
а где вы увидели time-value записей? и то, и другое - OLAP
CH мало чего умеет из списка. Это сильно специализированная СУБД, не подходит для многих видов работ
А возможна ли прозрачная замена libsqlite на встраиваемую либу этой дакдб? Чтобы в системе просто заменить — и всё её юзало, в том числе все питоньи приложения через обычный import sqlite3, с дополнительными фичами — через SQL-запросы.
Нет надежды, для начала пришлось бы переписать её с плюсов на си.
Звездеть — не мешки ворочать.>We also provide a SQLite API wrapper which means that if your applications is programmed against the SQLite C API, you can re‑link to DuckDB and it should continue working. See the sqlite_api_wrapper folder in our source repository for more information.
Можно.
Если у плюсов нет аби (до сих пор!), так о чём можно говорить? Замена уже никак не получится.
libsqlite - это сишная биба, не плюсовая.
> libsqlite - это сишная биба, не плюсовая.Ты всё правильно понял.
Что сказать-то хотел, сишник ты наш? Любая плюсовая обычная функция может быть экспортирована как сишная через extern "C".
Вот поэтому плюсы не нужны.
Так и не понял в чем уникальное торговое предложение (УТП) сабжа.
Встраемавая бд для аналитических запросов
Какая база данных лучше всего, почему, какую выбрать?
От задачи зависит. Универсальных нет. Пойми свой workload, потом выбирай.
Для тебя — MS Access.
В Access можно искать семантические циклы, но ... только до семи вложений. Не имею опыта - в других SQL системах есть такая опция как "копия таблицы"?
текстовый файл
> DuckDB is a fast in-process analytical databaseкто-нибудь может объяснить это как?
олап кубы это же подготовили в фоне для будущего массивного чтения
а что делать если это в пределах моего процесса? т.е. скрыть наличие еще одной базы? и стучаться к локальному файлу? а зачем?
что я не понял?
>олап кубы это же подготовилиТы где-нибудь рабочие olap-системы вживую видел? У меня вот в вузе одна такая была, сервер насиловали одновременно 30 человек и было проще стянуть базу и сделать дома, чем насиловать в 30 рыл один сервер за 40 минут, когда запрос проходил за 20. Дома этот запрос на sqlite проходил за пять - никто не насиловал диск в 30 рыл.
так может это не OLAP? а OLTP?странная оптимизация под запросы, если он потом выполняется 20 минут
У нас был redshift на aws проекте, было норм как data lake
Дак ты сравнил тоже. Российские вузы в среднем неплохо обучают фундаменталке, что не мешает им быть рассадником профнепригодного технического персонала, сроду не имевшего опыта работы в коммерческих IT-компаниях, в силу чего уровень администрирования чего-либо в вузах чудовищно убог.
>Дак ты сравнил тоже. Российские вузы в среднем неплохо обучают фундаменталкеВ среднем по России образование отсталое. И обучают фундаменталке плохо.
Дискретке и алгоритмам обучают нормально, всякие нейросети студенты сами осилят
Нейросетям обучают офигенно.Особенно в ВШЭ, я сам туда как-то планировал поступать на Machine Learning в магистратуру. Но потом передумал (уже специалист).
В МФТИ скорее всего очень хорошо обучают, в МГУ.
Есть офигенный курс по Deep Learning от НГУ, кажется. Его читал мужчина прямо из Кремниевой Долины (наш, русский).
А так... в каком-нибудь Арканзасском Университете ничерта не обучают нейронкам нормально тоже.
Более того смотрел лекции и слайды от топовых мировых университетов американских. Там там просто ужас и кошмар, разобраться в этом невозможно. В общем зависит от курса к курсу.
> А так... в каком-нибудь Арканзасском Университете ничерта не обучают нейронкам нормально
> тоже.
> Более того смотрел лекции и слайды от топовых мировых университетов американских. Там
> там просто ужас и кошмар, разобраться в этом невозможно. В общем
> зависит от курса к курсу.А зачем им это с махрово-платным образованием ?
Чем лучше открытые курсы и лекции - тем меньше смысла студенту брать кредит( который не спишут при банкротстве ) и дарить деньги ВУЗу
Не знаю, но образование ты таким образом не получишь. Как минимум нет экзаменов (проверка усвоенного материала) в конце курса, часто выложены только слайды, видео нет. Или нет проверок заданий (где ручкой нужно что-то писать).Думаю в основном это инициатива самого лектора. Есть буквально самый лучший в мире курс лекций по базам данных от Andy Pavlo. Там есть всё. Включая возможность писать код и прогонять через их систему тестов.
Но для Advanced Database Systems уже в основном только лекции.
> В среднем по России образование отсталое. И обучают фундаменталке плохо.Это смотря кто и как считает
Некоторые любят рассказывать сказки про американское супер-образование, но, почему-то огромное количество идей и достижений получается за счёт приезжих 1-2 поколения( бСССР / азия )
Тогда как итогом чисто американского образования( 2+ поколение жителей штатов ) является исчезающе-малое количество открытый, наработок и прочего
В твоём сообщении смешаны времена, люди и кони.
1. Советское/Российское образование самое лучшее в мире - это ложь.
2. Вклад Русских эимгрантов в американское образование и науку ничтожен, там лидируют китайцы и индусы.
3. Американское образование лучшее в мире - это тоже ложь. Разрекламированные и богатые коллежди типа Гарвард, МТИ, Принстон, это уже другая история.В СССР был массовый отбор одарённых детей по всей стране. Эти дети сначала учились в математических классах, потом поступали в МФТИ или МГУ, потом они должны были трудится в советских НИИ, где они осваивали ворованные иностранные технологии. Самим им государство не разрешала разрабатывать технологии. Эти дети были с приобретёнными психическими расстройствами. Получил двойку - опозорил родителей, подвёл Родину. Разрушительный "культ отличника". Некоторые дети умели читать и писать с двух лет, с трёх сочиняли стихи - передаю привет их родителям, если они ещё живы.
США. В обществе презирают наку, если эта наука не приносит доход. Причём американцу нужны быстрые деньги. Ну и, компьютеры это святое, да и монетизация в сфере IT неплохая, поэтому среди американцев и много лауреатов премии Тьюринга.
Сейчас происходит глобализация, если вам важны качественные знания а не корочка, то ищите преподователей а не учебные заведения. Как ни странно есть отличные преподователи среди индусов, да-да они разговаривают по английски с индусским акцентом. Есть замечательные учителя математики среди китайских эммигрантов.
OLAP кубы - это древняя технология. Попытка добавить аналитику в OLTP (row-store) базы данных. Нужно заранее их готовить, на конкретные запросы.Сейчас хотят из коробки иметь аналитические запросы. Для этого и создали OLAP (column-store) базы данных.
Там на индексы пофиг, на транзакции пофиг (в целом). Главное иметь быстрый table scan - сканирование всей таблицы с диска. И читать только несколько колонок (для этого и сделали column-store хранилище).
Проблема у неё та же, что и у склайт: может только в один процесс.
уточняй insert update в один процесс (да и то если один закрыл файл-базу, то другой может продолжить), чтение в сколько хочешь
> Учётные данные сохраняются в файле ~/.duckdb/stored_secretsРасскажите им кто-нибудь про XDG Base Directory Specification.
Чтобы какой-нибудь дурачок потом переписал файлы в этих директориях и повредил базу данных?Уверен сами дистрибутивы (и пакеты которые они предоставляют) НЕ используют и применяют эту спецификацию. Кто во что горазд.
И сегодня твоя $XDG_DATA_HOME выставлена, а завтра нет (или по дефолту указывает на другую директорию, или просто указывает на другую директорию).
И тютю твоя база данных. Удачи тебе собрать все компоненты теперь (файлы таблиц, файлы индексов, write-ahead log, и ещё кучу всего).
А также удачи упаковать всё в один архив (для бэкапа) и т.п.
Snap и Flatpak тоже так не работают.
> Уверен сами дистрибутивы (и пакеты которые они предоставляют) НЕ используют и применяют эту спецификацию. Кто во что горазд.Если бы это было так, то директория $HOME/.config/ была бы пустой.
Я не говорю что полностью не используют. Но помимо этой директории появляется куча своих. Даже у neovim свои директории, у VS Code, у кучи консольных утилит.
> кучи помойных утилитисправил
>Чтобы какой-нибудь дурачок потом переписал файлы в этих директориях и повредил базу данных?Дурачок здесь ты, причём тёмный и дикий. Это просто стандартизации расположения файлов кеша, конфигураций и пользовательских файлов.
>> формат хранилища пока не стабилизирован и меняется от версии к версии.Ну то есть кроме идеи самого главного еще и нет. даю 95% что не взлетит.
оно изначально затевалось для работы с чужими данными (внезапно - один из форматов - csv) выгружаемыми откуда-то где нельзя трахать сервер аналитикой за полтора квартала. Внутренний формат можно при этом переделывать для лучшей оптимизации сколько угодно.
Шикарная передовая база данных. Очень интересная. Передовые структуры данных и алгоритмы.База данных нового поколения.
> Передовые структуры данных и алгоритмы.Можно примеры?
Я всё не знаю, но видел их презентации и исследования немного.Например Partitioned Attributes Across (PAX) формат хранения данных. Такой гибрид row-store и column-store.
В классических column-store базах данных каждая колонка хранится в отдельном файле. И чтобы собрать строчку из 20-30 столбцов, нужно прочитать отдельно все эти 20-30 столбцов.
Многое у них в блоге можно посмотреть. Performance у них очень хороший.
Читал про адаптивные индексы (деталей не помню и не могу сказать имплементировы они или нет).
Но это целая научная группа, эксперты в базах данных. Альтернатив особо нет. У sqlite выигрывает вчистую (column-store позволяет сжимать данные одного типа хорошо, например, там много интересных оптимизаций в отличии от row-store (sqlite), тот же SIMD и т.п.)
Сначала подумал, что кто-то сделал форк с обвесами. Смотрю, а вот на гитхабе и вебсайте у них нет ни единой отсылки на скулайт. Всё своё, видимо.Должен заметить, что их релизная либа .so занимает толстенные 49MiB, в то время как старый добрый sqlite довлеет только на полторушку, так что я бы десять раз подумал о том, что а зачем оно мне.
Интересный проект. Я вот сейчас пишу на Go свой проект для исследования социального графа соцсетей, база на sqlite. При размере базы в несколько гигов уже стало подтормаживать, а ведь это не предел, по идее база может быть и больше.
Но обертка для Go к этому вряд ли в ближайшее время появится.
https://duckdb.org/docs/api/go
Прочитал доку. Вердикт — мусор, написанный в процессе детской игры разраба, когда он в рот тащит всё, что видит, включая кака. Разъясню поподробнее.1. Субд реализует кучу синтаксисов, когда несколько синтаксисов делаютодно и то же, при этом на самом деле ни один из них не совместим с другими субд, а просто один немного напоминает синтаксис одной субд, а второй — синтаксис другой субд.
2. идиотские никому не нужные на практике свистоперделки, вроде рекурсивных подзапросов. Да, они позволяют обходить графы .... в ширину ... генерируя все пути ... и храня их. Для маленького игрушечного дэйтасета сойдёт. Для дейтасета того размера, что для его хранения нужна база ... просто потратит ресурс SSD/HDD, и в конце навернёт систему по OOM. Вообще не понятно, зачем заморочились с реализацией этой фичи.
3. система расширений .... качающая их из инета ... и ставящая в локальную папку ... и система проверки цифровых подписей на расширениях. Всё триггерится через SQL. Разрабу невдомёк, что установкой расширений должен заниматься пакетный менеджер, ставиться они должны в систему, проверка подписи на so-файлах — должна делаться не субд, а пакетным же менеджером, загрузка расширений из SQL-кода - это дыра в безопасности, а установка — тем более. И что вообще подписывание расширений — это хрень какая-то, особенно учитывая то, что можно поменять настройки и грузить и неподписанные. А вот отключить возможность загрузки подписанных вообще никак нельзя. Тянет на бэкдор.
4. из SQL-кода можно писать и читать произвольные файлы. Что сразу делает исполнение SQL-кода опасным.
5. для работы со всякими Amazon s3 используется своё расширение вместо того, чтобы сказать, что всё это out of scope и юзайте fuse.
6. питоньи биндинги имеют целых 3 альтернативных интерфейса, причём один из них прямо берёт и воспринимает локальные переменные как базы. Ещё одна дыра.
7. судя по тому, что в руководстве по сборке из либ требуется только openssl, все остальные либы пшхоже что инлайнятся на уровне исходников.В общем: свистелок и перделок много, а вот общая адекватность отсутствует напрочь.