DuckDB
![]() |
Это незавершённая статья. Вы можете помочь проекту, исправив и дополнив её. |
DuckDB — это реляционная система управления данных (СУБД) с открытым исходным кодом, ориентированная на хранение данных в колонках.
Блыа разработана Марком Раасвельдтом и Ханнесом Мюлейзеном в Центре математики и информатики (Centrum Wiskunde & Informatica CWI) в Нидерландах.
Первая версия была выпущенна в 2019 году.
По состоянию на 2024 год проект достиг более 6 миллионов загрузок в месяц.
DuckDB была разработана для обеспечения высокой производительности при сложных запросах к большим базам данных во встроенной конфигурации[1], таких как объединение таблиц с сотнями столбцов и миллиардами строк. В отличие от других встроенных баз данных (например, SQLite), DuckDB не фокусируется на транзакционных (OLTP) приложениях, а ориентирована на задачи онлайн-аналитической обработки (OLAP).
DuckDB в своей нише OLAP не конкурирует с традиционными СУБД, такими как MSSQL, PostgreSQL и Oracle Database. Используя SQL для запросов, DuckDB нацелена на бессерверные приложения и обеспечивает чрезвычайно быстрые ответы, используя файлы Apache Parquet для хранения. Эти атрибуты делают его популярным выбором для анализа больших наборов данных в интерактивном режиме, но плохо соответствуют требованиям корпоративного хранилища данных. DuckDB использует векторизованный механизм обработки запросов. DuckDB выделяется среди систем управления базами данных, поскольку не имеет внешних зависимостей и может быть собрана только с использованием компилятора C++11.
DuckDB также отклоняется от характерной для СУБД модели клиент-сервер, работая внутри хост-процесса (например, у него есть биндинги для интерпретатора Python с возможностью непосредственного размещения данных в массивах NumPy).
Коммерческое использование
DuckDB используется в Facebook, Google и Airbnb.
Соавтор DuckDB Мюлейзен также руководит фирмой поддержки и консалтинга для программного обеспечения DuckDB Labs. Его компания решила не привлекать венчурное финансирование, заявив: «Мы считаем, что инвестиции заставят проект двигаться в сторону монетизации, и мы бы предпочли сохранить DuckDB открытым и доступным для как можно большего числа людей».
Другая компания, связанная с проектом, MotherDuck, получила финансирование в размере 100 млн долларов США для своей платформы данных на основе DuckDB от инвесторов, включая Andreessen Horowitz.
Поддержка языков программирования
Помимо нативного API для C и C++, DuckDB поддерживает ряд языков программирования.
Язык | Подробности | Ссылка |
---|---|---|
Java | Java API реализован с использованием JNI[2]. Обеспечивается поддержка формата Apache Arrow[3]. | [4] |
Python | Реализована поддержка Python API для пакетов анализа данных Pandas,[5] Apache Arrow[6] и Polars. | [7] |
Rust | Rust API распространяется как крейт rust, являющийся враппером над нативным C API. | [8] |
Node.JS | Node API | [9] |
R | R API | [10] |
Julia | Julia API | [11] |
Swift | Swift API | [12] |
Примечания
- ↑ Т.е. в составе других приложений.
- ↑ Java JNI Source Code (англ.). www.github.com. Дата обращения: 7 сентября 2024.
- ↑ DuckDB Java Arrow Source Code . www.github.com. Дата обращения: 7 сентября 2024.
- ↑ DuckDB Java Source Code (англ.). www.github.com. Дата обращения: 7 сентября 2024.
- ↑ DuckDB Pandas Source (англ.). www.github.com. Дата обращения: 7 сентября 2024.
- ↑ DuckDB PyArrow Source (англ.). www.github.com. Дата обращения: 7 сентября 2024.
- ↑ DuckDB Python Source Code (англ.). www.github.com. Дата обращения: 7 сентября 2024.
- ↑ DuckDB Rust Source Code (англ.). www.github.com. Дата обращения: 7 сентября 2024.
- ↑ DuckDB Node Source Code (англ.). www.github.com. Дата обращения: 7 сентября 2024.
- ↑ DuckDB R Source Code (англ.). www.github.com. Дата обращения: 7 сентября 2024.
- ↑ DuckDB Jullia Source Code (англ.). www.github.com. Дата обращения: 7 сентября 2024.
- ↑ DuckDB Swift Source Code . www.github.com. Дата обращения: 7 сентября 2024.