DuckDB: различия между версиями

Материал из in.wiki
Перейти к навигации Перейти к поиску
Строка 21: Строка 21:
 
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 была разработана для обеспечения высокой производительности при сложных запросах к большим базам данных во встроенной конфигурации<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 в своей нише 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 выделяется среди систем управления базами данных, поскольку не имеет внешних зависимостей и может быть собрана только с использованием компилятора [[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 также отклоняется от характерной для СУБД модели [[клиент-сервер]], работая внутри хост-процесса (например, у него есть [[Биндинг|биндинги]] для интерпретатора 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]].
  
 
== Коммерческое использование ==
 
== Коммерческое использование ==

Версия от 11:36, 21 сентября 2024

DuckDB
Язык программирования:
C++ и C++
Операционная система:
Cross-platform



Разработчик:
DuckDB Labs



Текущая версия:
v1.1.0
Дата выхода текущей версии:
сентябрь 9, 2024 (2024-09-09)



Лицензия:
MIT License

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.

Коммерческое использование

DuckDB используется в Facebook, Google и Airbnb[10].

Соавтор DuckDB Мюлейзен также руководит фирмой поддержки и консалтинга для программного обеспечения DuckDB Labs. Его компания решила не привлекать венчурное финансирование, заявив: «Мы считаем, что инвестиции заставят проект двигаться в сторону монетизации, и мы бы предпочли сохранить DuckDB открытым и доступным для как можно большего числа людей»[5].

Другая компания, связанная с проектом, MotherDuck, получила финансирование в размере 100 млн долларов США для своей платформы данных на основе DuckDB от инвесторов, включая Andreessen Horowitz[11].

Поддержка языков программирования

Помимо нативного API для C и C++, DuckDB поддерживает ряд языков программирования.

Client APIs
Язык Подробности Ссылка
Java Java API реализован с использованием JNI[12]. Обеспечивается поддержка формата Apache Arrow[13]. [14]
Python Реализована поддержка Python API для пакетов анализа данных Pandas,[15] Apache Arrow[16] и Polars. [17]
Rust Rust API распространяется как крейт rust, являющийся враппером над нативным C API. [18]
Node.JS Node API [19]
R R API [20]
Julia Julia API [21]
Swift Swift API [22]

Литература

Ссылки

Примечания

  1. 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.
  2. Clark, Lindsay. DuckDB reaches version 0.5.0 (англ.). www.theregister.com. Дата обращения: 23 марта 2024. Архивировано 7 марта 2024 года.
  3. PyPi Download Stats (англ.). www.pypistats.org. Дата обращения: 13 августа 2024. Архивировано 13 августа 2024 года.
  4. DuckDB Python Downloads Dashboard (англ.). duckdbstats.com. Дата обращения: 13 августа 2024. Архивировано 13 августа 2024 года.
  5. 5,0 5,1 Clark, Lindsay. DuckDB Labs puts limit on free support, rules out VC funding (англ.). www.theregister.com. Дата обращения: 23 марта 2024. Архивировано 23 марта 2024 года.
  6. Т.е. в составе других приложений.
  7. 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.
  8. Bannert, M. Research Software Engineering: A Guide to the Open Source Ecosystem. — CRC Press, 2024. — P. 25. — ISBN 978-1-04-000513-2.
  9. DuckDB Building Instructions. Дата обращения: 16 августа 2024.
  10. Clark, Lindsay. Scale-up database wrangler MotherDuck scores $47.5 million (англ.). www.theregister.com. Дата обращения: 23 марта 2024. Архивировано 23 марта 2024 года.
  11. Clark, Lindsay. MotherDuck serverless analytics platform wins $52.5M funding (англ.). www.theregister.com. Дата обращения: 23 марта 2024. Архивировано 23 марта 2024 года.
  12. Java JNI Source Code (англ.). www.github.com. Дата обращения: 7 сентября 2024.
  13. DuckDB Java Arrow Source Code. www.github.com. Дата обращения: 7 сентября 2024.
  14. DuckDB Java Source Code (англ.). www.github.com. Дата обращения: 7 сентября 2024.
  15. DuckDB Pandas Source (англ.). www.github.com. Дата обращения: 7 сентября 2024.
  16. DuckDB PyArrow Source (англ.). www.github.com. Дата обращения: 7 сентября 2024.
  17. DuckDB Python Source Code (англ.). www.github.com. Дата обращения: 7 сентября 2024.
  18. DuckDB Rust Source Code (англ.). www.github.com. Дата обращения: 7 сентября 2024.
  19. DuckDB Node Source Code (англ.). www.github.com. Дата обращения: 7 сентября 2024.
  20. DuckDB R Source Code (англ.). www.github.com. Дата обращения: 7 сентября 2024.
  21. DuckDB Jullia Source Code (англ.). www.github.com. Дата обращения: 7 сентября 2024.
  22. DuckDB Swift Source Code. www.github.com. Дата обращения: 7 сентября 2024.