DuckDB

DuckDB
ТипColumn-oriented DBMS
RDBMS
Автори

Марк Раасвельдт

Ханнес Мюлейзен
РозробникиDuckDB Labs
Стабільний випускv1.1.3 (4 листопада 2024)
Операційна системаCross-platform
Мова програмуванняC++
ЛіцензіяMIT License
Репозиторійgithub.com/duckdb/duckdb
Вебсайтwww.duckdb.org

DuckDB — це система керування реляційною базою даних із відкритим вихідним кодом (RDBMS), орієнтована на стовпці , розроблена Марком Раасвельдтом і Ханнесом Мюлейзеном у Centrum Wiskunde & Informatica (CWI) у Нідерландах[1]. Вперше опоблікована в 2019 році.[2] Зараз проєкт має понад 6 мільйонів завантажень на місяць.[3] [4] [5] DuckDB розроблений для забезпечення високої продуктивності складних запитів до великих баз даних у вбудованій конфігурації,[1] таких як об’єднання таблиць із сотнями стовпців і мільярдами рядків. На відміну від інших вбудованих баз даних (як-от, SQLite ), DuckDB не орієнтована на транзакції (OLTP) програми. Натомість вона спеціалізується на аналітичних навантаженнях онлайн-аналітичної обробки (OLAP).[6]

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 підтримує інтеграцію з різними мовами програмування, що робить її зручною для використання в різних середовищах і додатках.

Клієнтські API
Мова Примітки довідка
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]

Примітки

  1. а б в 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.
  2. а б Clark, Lindsay. DuckDB reaches version 0.5.0. www.theregister.com (англ.). Архів оригіналу за 7 березня 2024. Процитовано 23 березня 2024.
  3. PyPi Download Stats. www.pypistats.org (англ.). Архів оригіналу за 13 серпня 2024. Процитовано 13 серпня 2024.
  4. DuckDB Python Downloads Dashboard. duckdbstats.com (англ.). Архів оригіналу за 13 серпня 2024. Процитовано 13 серпня 2024.
  5. а б Clark, Lindsay. DuckDB Labs puts limit on free support, rules out VC funding. www.theregister.com (англ.). Архів оригіналу за 23 березня 2024. Процитовано 23 березня 2024.
  6. 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.
  7. 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.
  8. DuckDB Building Instructions. Процитовано 16 серпня 2024.
  9. Clark, Lindsay. Scale-up database wrangler MotherDuck scores $47.5 million. www.theregister.com (англ.). Архів оригіналу за 23 березня 2024. Процитовано 23 березня 2024.
  10. Clark, Lindsay. MotherDuck serverless analytics platform wins $52.5M funding. www.theregister.com (англ.). Архів оригіналу за 23 березня 2024. Процитовано 23 березня 2024.
  11. Java JNI Source Code. www.github.com (англ.). Процитовано 7 вересня 2024.
  12. DuckDB Java Arrow Source Code. www.github.com. Процитовано 7 вересня 2024.
  13. DuckDB Java Source Code. www.github.com (англ.). Процитовано 7 вересня 2024.
  14. DuckDB Pandas Source. www.github.com (англ.). Процитовано 7 вересня 2024.
  15. DuckDB PyArrow Source. www.github.com (англ.). Процитовано 7 вересня 2024.
  16. DuckDB Python Source Code. www.github.com (англ.). Процитовано 7 вересня 2024.
  17. DuckDB Rust Source Code. www.github.com (англ.). Процитовано 7 вересня 2024.
  18. DuckDB Node Source Code. www.github.com (англ.). Процитовано 7 вересня 2024.
  19. DuckDB R Source Code. www.github.com (англ.). Процитовано 7 вересня 2024.
  20. DuckDB Jullia Source Code. www.github.com (англ.). Процитовано 7 вересня 2024.
  21. DuckDB Swift Source Code. www.github.com. Процитовано 7 вересня 2024.

Подальше читання

Зовнішні посилання

Джерела

[1]

  1. D. Kaoudi, H. Mühleisen (2020). DuckDB: An Embeddable Analytical Database (PDF). CWI Amsterdam. Процитовано 26 листопада 2024.