DuckDB: различия между версиями
(не показано 14 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
− | + | {{Infobox software | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
| name = DuckDB | | name = DuckDB | ||
| logo = | | logo = | ||
Строка 22: | Строка 11: | ||
| website = {{URL|https://www.duckdb.org}} | | website = {{URL|https://www.duckdb.org}} | ||
}} | }} | ||
+ | '''DuckDB''' — это реляционная система управления данных (СУБД) с открытым исходным кодом, ориентированная на хранение данных в колонках. | ||
+ | |||
+ | Блыа разработана [[Раасвельдт, Марк|Марком Раасвельдтом]] и [[Мюлейзен, Ханнесом|Ханнесом Мюлейзеном]] в [[Центр математики и информатики|Центре математики и информатики]] (Centrum Wiskunde & Informatica CWI) в Нидерландах<ref name="Kamphuis 2020 pp. 608–612">{{cite book | last=Kamphuis | first=Chris | title=Advances in Information Retrieval | chapter=Graph Databases for Information Retrieval | publisher=Springer International Publishing | publication-place=Cham | volume=12036 | date=2020 | isbn=978-3-030-45441-8 | pmc=7148032 | doi=10.1007/978-3-030-45442-5_79 | pages=608–612}}</ref>. | ||
+ | |||
+ | Первая версия была выпущенна в 2019 году<ref name="Clark">{{Cite web |last=Clark |first=Lindsay |title=DuckDB reaches version 0.5.0 |url=https://www.theregister.com/2022/09/09/duckdb_0_5_0/ |access-date=2024-03-23 |website=www.theregister.com |language=en |archive-date=2024-03-07 |archive-url=https://web.archive.org/web/20240307163220/https://www.theregister.com/2022/09/09/duckdb_0_5_0/ |url-status=live }}</ref>. | ||
+ | |||
+ | По состоянию на 2024 год проект достиг более 6 миллионов загрузок в месяц<ref>{{Cite web |title=PyPi Download Stats |url=https://pypistats.org/packages/duckdb |access-date=2024-08-13 |website=www.pypistats.org |language=en |archive-date=2024-08-13 |archive-url=https://web.archive.org/web/20240813165631/https://pypistats.org/packages/duckdb |url-status=live }}</ref><ref>{{Cite web |title=DuckDB Python Downloads Dashboard |url=https://duckdbstats.com/ |access-date=2024-08-13 |website=duckdbstats.com |language=en |archive-date=2024-08-13 |archive-url=https://web.archive.org/web/20240813165159/https://duckdbstats.com/ |url-status=live }}</ref><ref name="theregister.com">{{Cite web |last=Clark |first=Lindsay |title=DuckDB Labs puts limit on free support, rules out VC funding |url=https://www.theregister.com/2023/10/05/duckdb_labs_puts_limit_on_vc_funds/ |access-date=2024-03-23 |website=www.theregister.com |language=en |archive-date=2024-03-23 |archive-url=https://web.archive.org/web/20240323064605/https://www.theregister.com/2023/10/05/duckdb_labs_puts_limit_on_vc_funds/ |url-status=live }}</ref>. | ||
+ | |||
+ | DuckDB была разработана для обеспечения высокой производительности при сложных запросах к большим базам данных как [[встраиваемая СУБД]]<ref>Т.е. в составе других приложений.</ref><ref name="Kamphuis 2020 pp. 608–612"/>, таких как объединение таблиц с сотнями столбцов и миллиардами строк. В отличие от других встроенных баз данных (например, [[SQLite]]), DuckDB не фокусируется на транзакционных ([[OLTP]]) приложениях, а ориентирована на задачи онлайн-аналитической обработки ([[OLAP]])<ref name="Raasveldt Mühleisen 2019 pp. 1981–1984">{{cite conference | last=Raasveldt | first=Mark | last2=Mühleisen | first2=Hannes | title=DuckDB: an Embeddable Analytical Database | publisher=ACM | date=2019-06-25 | isbn=978-1-4503-5643-5 | doi=10.1145/3299869.3320212 | pages=1981–1984}}</ref>. | ||
+ | |||
+ | DuckDB в своей нише OLAP не конкурирует с традиционными СУБД, такими как [[MSSQL]], [[PostgreSQL]] и [[Oracle Database]]. Используя [[SQL]] для запросов, DuckDB нацелена на бессерверные приложения и обеспечивает чрезвычайно быстрые ответы, используя файлы [[Apache Parquet]] для хранения. Эти атрибуты делают его популярным выбором для анализа больших наборов данных в интерактивном режиме, но плохо соответствуют требованиям корпоративного хранилища данных. DuckDB использует [[векторизованный механизм обработки запросов]]<ref>{{cite book | last=Bannert | first=M. | title=Research Software Engineering: A Guide to the Open Source Ecosystem | publisher=CRC Press | series=Chapman & Hall/CRC Data Science Series | year=2024 | isbn=978-1-04-000513-2 | url=https://books.google.com/books?id=yWL7EAAAQBAJ&pg=PT25 | access-date=2024-03-23 | page=25 | archive-date=2024-03-23 | archive-url=https://web.archive.org/web/20240323010627/https://books.google.com/books?id=yWL7EAAAQBAJ&pg=PT25 | url-status=live }}</ref>. DuckDB выделяется среди систем управления базами данных, поскольку не имеет внешних зависимостей и может быть собрана только с использованием компилятора [[C++11]]<ref>{{Cite web |title=DuckDB Building Instructions |url=https://duckdb.org/docs/dev/building/build_instructions |access-date=2024-08-16 }}</ref>. | ||
+ | |||
+ | DuckDB также отклоняется от характерной для СУБД модели [[клиент-сервер]], работая внутри хост-процесса (например, у него есть [[Биндинг|биндинги]] для интерпретатора Python с возможностью непосредственного размещения данных в массивах [[NumPy]])<ref name="Kamphuis 2020 pp. 608–612"/>). | ||
+ | |||
+ | DuckDB [https://duckdb.org/docs/extensions/postgres поддерживает] интеграцию с [[PostgreSQL]] как с источником данных, также [https://github.com/jwills/buenavista существует библиотека], реализующая [https://beta.pgcon.org/2014/schedule/attachments/330_postgres-for-the-wire.pdf Postgres wire protocol] для подключения к DuckDB. Её использование позволяет работать с DuckDB при помощи инструментов управления и запросов, разработанных для PostgreSQL, таких как [[DBeaver]]<ref>[https://habr.com/ru/articles/829502/ Всё что нужно знать про DuckDB]</ref>. | ||
+ | |||
+ | DuckDB обеспечивает два режима работы с данными - стандартный режим с сохранением базы данных между запусками и in-memory режим, при использовании которого все таблицы и расчёты не будут сохраняться физически и будут удалены при закрытии коннекта приложения с движком DuckDB. | ||
+ | |||
+ | == Коммерческое использование == | ||
+ | DuckDB используется в [[Facebook,]] [[Google]] и [[Airbnb]]<ref>{{Cite web |last=Clark |first=Lindsay |title=Scale-up database wrangler MotherDuck scores $47.5 million |url=https://www.theregister.com/2022/11/17/475_million_says_scaleup_databases/ |access-date=2024-03-23 |website=www.theregister.com |language=en |archive-date=2024-03-23 |archive-url=https://web.archive.org/web/20240323064604/https://www.theregister.com/2022/11/17/475_million_says_scaleup_databases/ |url-status=live }}</ref>. | ||
+ | |||
+ | Соавтор DuckDB Мюлейзен также руководит фирмой поддержки и консалтинга для программного обеспечения [[DuckDB Labs]]. Его компания решила не привлекать венчурное финансирование, заявив: «Мы считаем, что инвестиции заставят проект двигаться в сторону монетизации, и мы бы предпочли сохранить DuckDB открытым и доступным для как можно большего числа людей»<ref name="theregister.com"/>. | ||
+ | |||
+ | Другая компания, связанная с проектом, [[MotherDuck]], получила финансирование в размере 100 млн долларов США для своей платформы данных на основе DuckDB от инвесторов, включая [[Andreessen Horowitz]]<ref>{{Cite web |last=Clark |first=Lindsay |title=MotherDuck serverless analytics platform wins $52.5M funding |url=https://www.theregister.com/2023/09/21/motherduck_funding/ |access-date=2024-03-23 |website=www.theregister.com |language=en |archive-date=2024-03-23 |archive-url=https://web.archive.org/web/20240323064604/https://www.theregister.com/2023/09/21/motherduck_funding/ |url-status=live }}</ref>. Она предлагает, на коммерческой основе, инструменты для развертывания DuckDB в корпоративных сетях<ref>[https://habr.com/ru/companies/yoomoney/articles/840624/ DuckDB. Колоночная OLAP СУБД в кармане]</ref>. | ||
+ | |||
+ | == Поддержка языков программирования == | ||
+ | Помимо нативного API для [[C]] и [[C++]], DuckDB поддерживает ряд языков программирования. | ||
+ | {| class="wikitable" | ||
+ | |+Client APIs | ||
+ | |- | ||
+ | !Язык!!Подробности!!Ссылка | ||
+ | |- | ||
+ | |[[Java (programming language)|Java]]||[https://duckdb.org/docs/api/java Java API] реализован с использованием [[Java Native Interface|JNI]]<ref>{{cite web |title=Java JNI Source Code |url=https://github.com/duckdb/duckdb-java/blob/main/src/jni/duckdb_java.cpp |access-date=2024-09-07 |website=www.github.com |language=en}}</ref>. Обеспечивается поддержка формата [[Apache Arrow]]<ref>{{cite web |title=DuckDB Java Arrow Source Code |url=https://github.com/duckdb/duckdb-java/blob/v1.0.0/src/main/java/org/duckdb/DuckDBResultSet.java#L132 |website=www.github.com |access-date=2024-09-07}}</ref>.||<ref>{{cite web |title=DuckDB Java Source Code |url=https://github.com/duckdb/duckdb-java |access-date=2024-09-07 |website=www.github.com |language=en }}</ref> | ||
+ | |- | ||
+ | |[[Python (programming language)|Python]]||Реализована поддержка [https://duckdb.org/docs/api/python/overview Python API] для пакетов [[Анализ данных|анализа данных]] [[Pandas (software)|Pandas]],<ref>{{cite web |title=DuckDB Pandas Source |url=https://github.com/duckdb/duckdb/tree/v1.0.0/tools/pythonpkg/src/include/duckdb_python/pandas| access-date=2024-09-07 |website=www.github.com |language=en }}</ref> [[Apache Arrow]]<ref>{{cite web |title=DuckDB PyArrow Source |url=https://github.com/duckdb/duckdb/tree/v1.0.0/tools/pythonpkg/src/include/duckdb_python/arrow |access-date=2024-09-07 |website=www.github.com |language=en }}</ref> и [[Polars]].||<ref>{{cite web |title=DuckDB Python Source Code |url=https://github.com/duckdb/duckdb/tree/v1.0.0/tools/pythonpkg/src/include/duckdb_python |access-date=2024-09-07 |website=www.github.com |language=en }}</ref> | ||
+ | |- | ||
+ | |[[Rust (programming language)|Rust]]||[https://duckdb.org/docs/api/rust Rust API] распространяется как [https://docs.rs/duckdb/latest/duckdb/ крейт rust], являющийся [[Враппер|враппером]] над нативным C API.||<ref>{{cite web |title=DuckDB Rust Source Code |url=https://github.com/duckdb/duckdb-rs |access-date=2024-09-07 |website=www.github.com |language=en }}</ref> | ||
+ | |- | ||
+ | |[[Node.js|Node.JS]]||[https://duckdb.org/docs/api/nodejs/overview Node API]||<ref>{{cite web |title=DuckDB Node Source Code|url=https://github.com/duckdb/duckdb-node |access-date=2024-09-07 |website=www.github.com |language=en }}</ref> | ||
+ | |- | ||
+ | |[[R (programming language)|R]]||[https://duckdb.org/docs/api/r R API]||<ref>{{cite web |title=DuckDB R Source Code |url=https://github.com/duckdb/duckdb-r |access-date=2024-09-07 |website=www.github.com |language=en }}</ref> | ||
+ | |- | ||
+ | |[[Julia (programming language)|Julia]]||[https://duckdb.org/docs/api/julia Julia API]||<ref>{{cite web |title=DuckDB Jullia Source Code |url=https://github.com/duckdb/duckdb/tree/v1.0.0/tools/juliapkg |access-date=2024-09-07 |website=www.github.com |language=en }}</ref> | ||
+ | |- | ||
+ | |[[Swift (programming language)|Swift]]||[https://duckdb.org/docs/api/swift Swift API]||<ref>{{cite web |title=DuckDB Swift Source Code |url=https://github.com/duckdb/duckdb-swift |website=www.github.com |access-date=2024-09-07}}</ref> | ||
+ | |} | ||
+ | |||
+ | == Литература == | ||
+ | *{{cite web |last1=Woodie |first1=Alex |title=DuckDB Walks to the Beat of Its Own Analytics Drum |url=https://www.datanami.com/2024/03/05/duckdb-walks-to-the-beat-of-its-own-analytics-drum/ |website=Datanami |date=5 March 2024}} | ||
+ | *[https://habr.com/ru/articles/829502/ Всё что нужно знать про DuckDB] | ||
+ | *[https://habr.com/ru/companies/yoomoney/articles/840624/ DuckDB. Колоночная OLAP СУБД в кармане] | ||
+ | *[https://habr.com/ru/articles/721832/ Геопространственная DuckDB] | ||
+ | |||
+ | == Ссылки == | ||
+ | *[https://www.duckdb.org Официальный сайт DuckDB] | ||
+ | == Примечания == | ||
+ | |||
+ | <references /> | ||
+ | [[Категория:Программное обеспечение разработанное на C]] | ||
+ | [[Категория:Встраиваемые СУБД]] |
Текущая версия от 23:11, 21 сентября 2024
DuckDB — это реляционная система управления данных (СУБД) с открытым исходным кодом, ориентированная на хранение данных в колонках.
Блыа разработана Марком Раасвельдтом и Ханнесом Мюлейзеном в Центре математики и информатики (Centrum Wiskunde & Informatica CWI) в Нидерландах[1].
Первая версия была выпущенна в 2019 году[2].
По состоянию на 2024 год проект достиг более 6 миллионов загрузок в месяц[3][4][5].
DuckDB была разработана для обеспечения высокой производительности при сложных запросах к большим базам данных как встраиваемая СУБД[6][1], таких как объединение таблиц с сотнями столбцов и миллиардами строк. В отличие от других встроенных баз данных (например, SQLite), DuckDB не фокусируется на транзакционных (OLTP) приложениях, а ориентирована на задачи онлайн-аналитической обработки (OLAP)[7].
DuckDB в своей нише OLAP не конкурирует с традиционными СУБД, такими как MSSQL, PostgreSQL и Oracle Database. Используя SQL для запросов, DuckDB нацелена на бессерверные приложения и обеспечивает чрезвычайно быстрые ответы, используя файлы Apache Parquet для хранения. Эти атрибуты делают его популярным выбором для анализа больших наборов данных в интерактивном режиме, но плохо соответствуют требованиям корпоративного хранилища данных. DuckDB использует векторизованный механизм обработки запросов[8]. DuckDB выделяется среди систем управления базами данных, поскольку не имеет внешних зависимостей и может быть собрана только с использованием компилятора C++11[9].
DuckDB также отклоняется от характерной для СУБД модели клиент-сервер, работая внутри хост-процесса (например, у него есть биндинги для интерпретатора Python с возможностью непосредственного размещения данных в массивах NumPy)[1]).
DuckDB поддерживает интеграцию с PostgreSQL как с источником данных, также существует библиотека, реализующая Postgres wire protocol для подключения к DuckDB. Её использование позволяет работать с DuckDB при помощи инструментов управления и запросов, разработанных для PostgreSQL, таких как DBeaver[10].
DuckDB обеспечивает два режима работы с данными - стандартный режим с сохранением базы данных между запусками и in-memory режим, при использовании которого все таблицы и расчёты не будут сохраняться физически и будут удалены при закрытии коннекта приложения с движком DuckDB.
Коммерческое использование[править | править код]
DuckDB используется в Facebook, Google и Airbnb[11].
Соавтор DuckDB Мюлейзен также руководит фирмой поддержки и консалтинга для программного обеспечения DuckDB Labs. Его компания решила не привлекать венчурное финансирование, заявив: «Мы считаем, что инвестиции заставят проект двигаться в сторону монетизации, и мы бы предпочли сохранить DuckDB открытым и доступным для как можно большего числа людей»[5].
Другая компания, связанная с проектом, MotherDuck, получила финансирование в размере 100 млн долларов США для своей платформы данных на основе DuckDB от инвесторов, включая Andreessen Horowitz[12]. Она предлагает, на коммерческой основе, инструменты для развертывания DuckDB в корпоративных сетях[13].
Поддержка языков программирования[править | править код]
Помимо нативного API для C и C++, DuckDB поддерживает ряд языков программирования.
Язык | Подробности | Ссылка |
---|---|---|
Java | Java API реализован с использованием JNI[14]. Обеспечивается поддержка формата Apache Arrow[15]. | [16] |
Python | Реализована поддержка Python API для пакетов анализа данных Pandas,[17] Apache Arrow[18] и Polars. | [19] |
Rust | Rust API распространяется как крейт rust, являющийся враппером над нативным C API. | [20] |
Node.JS | Node API | [21] |
R | R API | [22] |
Julia | Julia API | [23] |
Swift | Swift API | [24] |
Литература[править | править код]
- Woodie, Alex. DuckDB Walks to the Beat of Its Own Analytics Drum . Datanami (5 марта 2024).
- Всё что нужно знать про DuckDB
- DuckDB. Колоночная OLAP СУБД в кармане
- Геопространственная DuckDB
Ссылки[править | править код]
Примечания[править | править код]
- ↑ 1,0 1,1 1,2 Kamphuis, Chris. Graph Databases for Information Retrieval // Advances in Information Retrieval. — Springer International Publishing, 2020. — Vol. 12036. — P. 608–612. — ISBN 978-3-030-45441-8. — doi:10.1007/978-3-030-45442-5_79.
- ↑ Clark, Lindsay. DuckDB reaches version 0.5.0 (англ.). www.theregister.com. Дата обращения: 23 марта 2024. Архивировано 7 марта 2024 года.
- ↑ PyPi Download Stats (англ.). www.pypistats.org. Дата обращения: 13 августа 2024. Архивировано 13 августа 2024 года.
- ↑ DuckDB Python Downloads Dashboard (англ.). duckdbstats.com. Дата обращения: 13 августа 2024. Архивировано 13 августа 2024 года.
- ↑ 5,0 5,1 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 (2019-06-25). DuckDB: an Embeddable Analytical Database. ACM. pp. 1981–1984. doi:10.1145/3299869.3320212. ISBN 978-1-4503-5643-5.
- ↑ Bannert, M. Research Software Engineering: A Guide to the Open Source Ecosystem. — CRC Press, 2024. — P. 25. — ISBN 978-1-04-000513-2.
- ↑ DuckDB Building Instructions . Дата обращения: 16 августа 2024.
- ↑ Всё что нужно знать про DuckDB
- ↑ 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 года.
- ↑ DuckDB. Колоночная OLAP СУБД в кармане
- ↑ 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.