۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

DuckDB: پایگاه داده تحلیلی کوچک اما قدرتمند

برای انجام تجزیه و تحلیل داده های ستونی به ابزارهای بزرگ و حجیم نیاز ندارید. DuckDB یک پایگاه داده تحلیلی قدرتمند را در ابزاری به اندازه کافی برای اجرا بر روی لپ تاپ شما قرار می دهد.

برای انجام تجزیه و تحلیل داده های ستونی به ابزارهای بزرگ و حجیم نیاز ندارید. DuckDB یک پایگاه داده تحلیلی قدرتمند را در ابزاری به اندازه کافی برای اجرا بر روی لپ تاپ شما قرار می دهد.

بیشتر مردم تصور می‌کنند که پایگاه‌های داده تحلیلی یا OLAPs، جانوران بزرگ و قدرتمندی هستند – و درست هم هستند. سیستم‌هایی مانند Snowflake، Redshift، یا Postgres شامل راه‌اندازی و نگهداری زیادی هستند، حتی در تجسم‌های میزبان ابری. اما اگر تنها چیزی که می خواهید تجزیه و تحلیل «فقط کافی» برای مجموعه داده روی دسکتاپ شما باشد، چه؟ در این صورت، DuckDB ارزش کاوش را دارد.

تجزیه و تحلیل داده های ستونی در لپ تاپ شما

DuckDB یک موتور پایگاه داده تحلیلی کوچک اما قدرتمند است—یک فایل اجرایی منفرد و مستقل که می تواند به صورت مستقل یا به عنوان یک کتابخانه قابل بارگیری در یک فرآیند میزبان اجرا شود. نیاز به راه اندازی یا نگهداری با DuckDB بسیار کم است. به این ترتیب، بیشتر شبیه SQLite است تا پایگاه داده های تحلیلی بزرگتر در کلاس خود.

DuckDB برای جستجوی داده ستون محور طراحی شده است. داده ها را از منابعی مانند CSV، JSON و Apache Parquet دریافت می کند و پرس و جو سریع را با استفاده از نحو آشنای SQL فعال می کند. DuckDB از کتابخانه‌ها برای تمام زبان‌های برنامه‌نویسی اصلی پشتیبانی می‌کند، بنابراین می‌توانید با استفاده از زبان انتخابی خود به صورت برنامه‌نویسی با آن کار کنید. یا می‌توانید از رابط خط فرمان DuckDB، به تنهایی یا به عنوان بخشی از یک خط لوله پوسته.

معرفی Redwood.js: توسعه سریع برنامه با React

بارگیری داده ها در DuckDB

وقتی با داده‌ها در DuckDB کار می‌کنید، دو حالت وجود دارد که می‌توانید برای آن داده‌ها استفاده کنید. حالت مداوم داده‌ها را روی دیسک می‌نویسد تا بتواند بارهای کاری بزرگ‌تر از حافظه سیستم را مدیریت کند. این رویکرد به قیمت کمی سرعت تمام می شود. حالت در حافظه مجموعه داده‌ها را به طور کامل در حافظه نگه می‌دارد، که سریع‌تر است اما پس از پایان برنامه چیزی را حفظ نمی‌کند. (SQLite را می توان به همین روش استفاده کرد.)

DuckDB می‌تواند داده‌ها را از فرمت‌های مختلف جذب کند. فایل‌های CSV، JSON و Apache Parket سه مورد از رایج‌ترین فایل‌ها هستند. با CSV و JSON، DuckDB به‌طور پیش‌فرض تلاش می‌کند تا ستون‌ها و انواع داده‌ها را به تنهایی کشف کند، اما می‌توانید —به عنوان مثال، برای تعیین قالبی برای ستون تاریخ.

دیگر پایگاه‌های داده، مانند MySQL یا Postgres نیز می‌توانند به عنوان منابع داده استفاده شوند. شما باید یک افزونه DuckDB را بارگذاری کنید (در ادامه در این مورد بیشتر توضیح خواهیم داد) و یک رشته اتصال به سرور پایگاه داده ارائه دهید. DuckDB فایل‌های آن پایگاه‌های داده را مستقیماً نمی‌خواند. با این حال، با SQLite، شما به فایل پایگاه داده SQLite وصل می شوید که گویی فقط یک فایل داده دیگر است.

مشاغل توسعه دهنده نرم افزار: چگونه اکنون استخدام شویم

برای بارگیری داده‌ها در DuckDB از یک منبع خارجی، می‌توانید از رشته SQL استفاده کنید. مستقیماً در DuckDB:


SELECT * FROM read_csv('data.csv');

همچنین می‌توانید از روش‌هایی در کتابخانه رابط DuckDB برای یک زبان خاص استفاده کنید. با کتابخانه Python برای DuckDB، جذب به این شکل است:


import duckdb
duckdb.read_csv("data.csv")

همچنین می‌توانید فرمت‌های فایل خاصی را مستقیماً جستجو کنید، مانند Parquet:


SELECT * FROM 'test.parquet';

همچنین می‌توانید پرس‌و‌جوهای فایل را برای ایجاد نمای داده‌ای دائمی صادر کنید، که می‌تواند به‌عنوان جدولی برای چندین درخواست استفاده شود:


CREATE VIEW test_data AS SELECT * FROM read_parquet('test.parquet');

DuckDB بهینه‌سازی‌هایی برای کار با فایل‌های Parquet دارد، به طوری که فقط آنچه را که نیاز دارد از فایل می‌خواند.

اینترفیس‌های دیگر مانند ADBC و ODBC نیز می توان استفاده کرد. ODBC به عنوان یک اتصال دهنده برای ابزارهای تجسم داده مانند Tableau عمل می کند.

داده‌های وارد شده به DuckDB را می‌توان در بسیاری از قالب‌های رایج مجدداً صادر کرد: CSV، JSON، Parquet، Microsoft Excel، و غیره. این باعث می شود DuckDB به عنوان یک ابزار تبدیل داده در خط لوله پردازش مفید باشد.

جستجوی داده در DuckDB

هنگامی که داده‌ها را در DuckDB بارگیری کردید، می‌توانید با استفاده از عبارات SQL آن را پرس و جو کنید. قالب چنین عباراتی با پرس و جوهای معمولی SQL تفاوتی ندارد:


SELECT * FROM users WHERE ID>1000 ORDER BY Name DESC LIMIT 5;

اگر از یک API کلاینت برای درخواست DuckDB استفاده می کنید، می توانید رشته های SQL را از طریق API عبور دهید، یا می توانید از API رابطه‌ای برای ایجاد کوئری‌ها به صورت برنامه‌ریزی. در پایتون، خواندن از یک فایل JSON و پرس و جو کردن آن ممکن است به شکل زیر باشد:


import duckdb
file = duckdb.read_json("users.json")
file.select("*").filter("ID>1000").order("Name").limit(5)

اگر از Python استفاده می‌کنید، می‌توانید از PySpark API برای استعلام مستقیم DuckDB استفاده کنید. اگرچه پیاده‌سازی PySpark توسط DuckDB هنوز از مجموعه کامل ویژگی‌ها پشتیبانی نمی‌کند.

با آناکوندا پایتون شروع کنید

گویش DuckDB از اکثر گویش‌های رایج SQL پیروی می‌کند، هرچند که با چند گویش رایگان همراه است. اضافات به خاطر تجزیه و تحلیل به عنوان مثال، قرار دادن بند SAMPLE در یک پرس و جو به شما امکان می دهد یک پرس و جو را تنها با استفاده از یک زیر مجموعه اجرا کنید. از داده های یک جدول جستجوی حاصل سریعتر اجرا می شود اما ممکن است دقت کمتری داشته باشد. DuckDB همچنین از کلمه کلیدی PIVOT (برای ایجاد جداول محوری)، توابع پنجره و بندهای QUALIFY برای فیلتر کردن آنها و بسیاری دیگر از توابع تحلیلی در گویش SQL خود پشتیبانی می کند.

برنامه‌های افزودنی DuckDB

DuckDB محدود به قالب‌های داده و رفتارهای موجود در آن نیست. API برنامه افزودنی آن، نوشتن افزونه‌های شخص ثالث برای DuckDB برای پشتیبانی از فرمت‌های داده جدید را ممکن می‌سازد. یا رفتارهای دیگر.

برخی از عملکردهای ارائه شده با DuckDB از طریق افزونه‌های شخص اول پیاده‌سازی می‌شوند، مانند پشتیبانی از فایل های پارکت موارد دیگر، مانند اتصال MySQL یا Postgres، یا جستجوی تشابه برداری نیز توسط تیم DuckDB نگهداری می‌شوند اما ارائه می‌شوند. به طور جداگانه.