DuckDB
DuckDB — це система керування реляційною базою даних із відкритим вихідним кодом (RDBMS), орієнтована на стовпці , розроблена Марком Раасвельдтом і Ханнесом Мюлейзеном у Centrum Wiskunde & Informatica (CWI) у Нідерландах[1]. Вперше опоблікована в 2019 році.[2] Зараз проєкт має понад 6 мільйонів завантажень на місяць.[3] [4] [5] DuckDB розроблений для забезпечення високої продуктивності складних запитів до великих баз даних у вбудованій конфігурації,[1] таких як об’єднання таблиць із сотнями стовпців і мільярдами рядків. На відміну від інших вбудованих баз даних (як-от, SQLite ), DuckDB не орієнтована на транзакції (OLTP) програми. Натомість вона спеціалізується на аналітичних навантаженнях онлайн-аналітичної обробки (OLAP).[6]
Тип | Column-oriented DBMS RDBMS |
---|---|
Автори | Марк Раасвельдт Ханнес Мюлейзен |
Розробники | DuckDB Labs |
Стабільний випуск | v1.1.3 (4 листопада 2024) |
Операційна система | Cross-platform |
Мова програмування | C++ |
Ліцензія | MIT License |
Репозиторій | github.com/duckdb/duckdb |
Вебсайт | www.duckdb.org |
DuckDB у своїй галузі OLAP не конкурує з традиційними DBMS, такими як MSSQL, PostgreSQL чи база даних Oracle . Використовуючи SQL для запитів, DuckDB орієнтована на безсерверні застосунки та забезпечує надзвичайно швидку обробку, зберігаючи дані у форматі файлів Apache Parquet. Ці характеристики роблять її популярним вибором для аналізу великих наборів даних в інтерактивному режимі, проте погано відповідають вимогам корпоративного сховища даних.[7]
DuckDB використовує механізм векторизованої обробки запитів, що робить її унікальною серед систем керування базами даних. Вона не має зовнішніх залежностей і може бути зібрана лише за допомогою компілятора C++11.[8] DuckDB також відходить від традиційної клієнт-серверної моделі, працюючи всередині хост-процесу. Наприклад, вона має прив’язки, для інтерпретатора Python, і може безпосередньо розміщувати дані у масивах NumPy[1], що робить її особливо зручною для аналітичних завдань у середовищі Python.
Комерційне використання
ред.DuckDB використовується у Facebook, Google і Airbnb.[9]
Співавтор DuckDB Ханнес Мюлейзен також керує компанією DuckDB Labs, що займається підтримкою та консультуванням цього програмного забезпечення.[2] Компанія вирішила не залучати венчурне фінансування, заявивши: «Ми вважаємо, що інвестиції спрямують проект на монетизацію, і ми б віддали перевагу залишати DuckDB відкритим і доступним для якомога більшої кількості людей».[5] Натомість інша компанія, MotherDuck, отримала фінансування в розмірі 100 мільйонів доларів для своєї платформи даних на основі DuckDB, серед інвесторів якої є Andreessen Horowitz .[10]
Підтримка мови
ред.Окрім власних API C та C++, DuckDB підтримує інтеграцію з різними мовами програмування, що робить її зручною для використання в різних середовищах і додатках.
Мова | Примітки | довідка |
---|---|---|
Java | Java API реалізовано за допомогою JNI. [11] Передбачена інтеграція з форматом Apache Arrow [12]. | [13] |
Python | API Python реалізує підтримку для пакетів аналізу даних Pandas, [14] Apache Arrow [15] і Polars. | [16] |
Rust | Rust API розповсюджується як rust crate, який розкриває елегантну оболонку поверх рідного C API. | [17] |
Node. JS | Node API | [18] |
R | R API | [19] |
Julia | Julia API | [20] |
Swift | Swift API | [21] |
Примітки
ред.- ↑ а б в Kamphuis, Chris (2020). Graph Databases for Information Retrieval. Advances in Information Retrieval. Т. 12036. Springer International Publishing. с. 608—612. doi:10.1007/978-3-030-45442-5_79. ISBN 978-3-030-45441-8. PMC 7148032.
- ↑ а б Clark, Lindsay. DuckDB reaches version 0.5.0. www.theregister.com (англ.). Архів оригіналу за 7 березня 2024. Процитовано 23 березня 2024.
- ↑ PyPi Download Stats. www.pypistats.org (англ.). Архів оригіналу за 13 серпня 2024. Процитовано 13 серпня 2024.
- ↑ DuckDB Python Downloads Dashboard. duckdbstats.com (англ.). Архів оригіналу за 13 серпня 2024. Процитовано 13 серпня 2024.
- ↑ а б Clark, Lindsay. DuckDB Labs puts limit on free support, rules out VC funding. www.theregister.com (англ.). Архів оригіналу за 23 березня 2024. Процитовано 23 березня 2024.
- ↑ Raasveldt, Mark; Mühleisen, Hannes (25 червня 2019). DuckDB: an Embeddable Analytical Database. ACM. с. 1981—1984. doi:10.1145/3299869.3320212. ISBN 978-1-4503-5643-5.
- ↑ Bannert, M. (2024). Research Software Engineering: A Guide to the Open Source Ecosystem. Chapman & Hall/CRC Data Science Series. CRC Press. с. 25. ISBN 978-1-04-000513-2. Архів оригіналу за 23 березня 2024. Процитовано 23 березня 2024.
- ↑ DuckDB Building Instructions. Процитовано 16 серпня 2024.
- ↑ Clark, Lindsay. Scale-up database wrangler MotherDuck scores $47.5 million. www.theregister.com (англ.). Архів оригіналу за 23 березня 2024. Процитовано 23 березня 2024.
- ↑ Clark, Lindsay. MotherDuck serverless analytics platform wins $52.5M funding. www.theregister.com (англ.). Архів оригіналу за 23 березня 2024. Процитовано 23 березня 2024.
- ↑ 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.
Подальше читання
ред.- Woodie, Alex (5 березня 2024). DuckDB Walks to the Beat of Its Own Analytics Drum. Datanami.
Зовнішні посилання
ред.Джерела
ред.- ↑ D. Kaoudi, H. Mühleisen (2020). DuckDB: An Embeddable Analytical Database (PDF). CWI Amsterdam. Процитовано 26 листопада 2024.