آمازون Redshift یک سرویس انبار داده ابری است که پردازش تحلیلی با کارایی بالا را بر اساس معماری پردازش موازی گسترده (MPP) ارائه می دهد. ایجاد و نگهداری خطوط لوله داده یک چالش مشترک برای همه شرکت ها است. مدیریت فایلهای SQL، یکپارچهسازی کار تیمی، ترکیب تمام اصول مهندسی نرمافزار، و وارد کردن ابزارهای خارجی میتواند کاری زمانبر باشد که نیاز به طراحی پیچیده و آمادهسازی زیادی دارد.
dbt (DataBuildTool) این مکانیسم را با معرفی یک چارچوب ساختار یافته برای تجزیه و تحلیل داده ها، تبدیل و ارکستراسیون ارائه می دهد. همچنین اصول کلی مهندسی نرم افزار مانند ادغام با مخازن git، راه اندازی را اعمال می کند. خشک کن کد، اضافه کردن موارد تست عملکردی، و شامل کتابخانه های خارجی. این مکانیسم به توسعه دهندگان اجازه می دهد تا بر روی تهیه فایل های SQL بر اساس منطق تجاری تمرکز کنند و بقیه توسط dbt مراقبت می شود.
در این پست، ما به یک روش بهینه و مقرون به صرفه برای ترکیب dbt در آمازون Redshift نگاه می کنیم. ما استفاده می کنیم آمازون الاستیک رجیستری کانتینر (Amazon ECR) برای ذخیره تصاویر dbt Docker و AWS Fargate عنوان سرویس کانتینر الاستیک آمازون (Amazon ECS) وظیفه اجرای کار.
چارچوب dbt چگونه با آمازون Redshift کار می کند؟
dbt یک ماژول آداپتور Redshift آمازون به نام دارد dbt-redshift که آن را قادر می سازد با آمازون Redshift متصل شود و کار کند. تمام پروفایل های اتصال در dbt پیکربندی شده اند profiles.yml
فایل. در یک محیط بهینه، ما اعتبارنامه ها را در آن ذخیره می کنیم مدیر اسرار AWS و آنها را بازیابی کنید.
کد زیر محتویات profile.yml را نشان می دهد:
نمودار زیر اجزای اصلی چارچوب dbt را نشان می دهد:
اجزای اولیه به شرح زیر است:
- مدل – اینها بهعنوان یک عبارت SELECT نوشته میشوند و بهعنوان یک فایل .sql ذخیره میشوند. همه پرس و جوهای تبدیل را می توان در اینجا نوشت که می تواند به عنوان یک جدول یا نما عملی شود. تازه کردن جدول می تواند بر اساس پیکربندی کامل یا افزایشی باشد. برای اطلاعات بیشتر به مدل های SQL مراجعه کنید.
- عکس های فوری - این وسایل نوع 2 ابعاد به آرامی در حال تغییر است (SCD) روی جداول منبع قابل تغییر. این SCD ها چگونگی تغییر یک ردیف در جدول را در طول زمان مشخص می کنند.
- دانه – اینها فایلهای CSV در پروژه dbt شما هستند (معمولاً در دایرکتوری seeds) که dbt میتواند در شما بارگیری کند انبار داده با استفاده از
dbt seed
فرمان - تست - اینها ادعاهایی هستند که شما در مورد مدل ها و سایر منابع در پروژه dbt خود (مانند منابع، دانه ها و عکس های فوری) بیان می کنید. وقتی می دوی
dbt test
، dbt به شما می گوید که آیا هر تست در پروژه شما موفق می شود یا ناموفق است. - ماکرو - اینها کدهایی هستند که می توانند چندین بار مورد استفاده مجدد قرار گیرند. آنها مشابه "توابع" در سایر زبان های برنامه نویسی هستند و در صورت تکرار کد در چندین مدل بسیار مفید هستند.
این کامپوننت ها به صورت فایل های .sql ذخیره می شوند و توسط آن ها اجرا می شوند دستورات dbt CLI. در طول اجرا، dbt a ایجاد می کند گراف غیر چرخشی هدایتشده (DAG) بر اساس مرجع داخلی بین اجزای dbt. از DAG برای هماهنگ کردن دنباله اجرا استفاده می کند.
نمایه های متعددی را می توان در فایل profiles.yml ایجاد کرد که dbt می تواند از آنها برای هدف قرار دادن محیط های مختلف Redshift در حین اجرا استفاده کند. برای اطلاعات بیشتر، به تنظیم Redshift مراجعه کنید.
بررسی اجمالی راه حل
نمودار زیر معماری راه حل ما را نشان می دهد.
گردش کار شامل مراحل زیر است:
- کانکتور منبع باز dbt-redshift برای ایجاد پروژه dbt ما از جمله تمام مدلها، عکسهای فوری، تستها، ماکروها و پروفایلها استفاده میشود.
- یک تصویر Docker ایجاد می شود و به مخزن ECR منتقل می شود.
- تصویر Docker توسط Fargate به عنوان یک کار ECS اجرا می شود توابع مرحله AWS. تمام اعتبارنامههای Amazon Redshift در Secrets Manager ذخیره میشوند، که سپس توسط وظیفه ECS برای ارتباط با Amazon Redshift استفاده میشود.
- در طول اجرا، dbt همه مدلها، عکسهای فوری، تستها و ماکروها را به دستورات SQL سازگار با Amazon Redshift تبدیل میکند و اجرا را بر اساس داخلی هماهنگ میکند. نمودار دودمان داده نگهداری. این دستورات SQL مستقیماً در کلاستر Redshift اجرا می شوند و بنابراین حجم کار مستقیماً به Redshift آمازون منتقل می شود.
- پس از اتمام اجرا، dbt مجموعه ای از فایل های HTML و JSON را برای میزبانی ایجاد می کند مستندات dbt، که کاتالوگ داده، عبارات SQL کامپایل شده، نمودار خط داده و غیره را توصیف می کند.
پیش نیازها
شما باید پیش نیازهای زیر را داشته باشید:
- درک خوب از اصول dbt و مراحل پیاده سازی.
- یک حساب AWS با مجوز نقش کاربر برای دسترسی به خدمات AWS مورد استفاده در این راه حل.
- گروه های امنیتی برای Fargate برای دسترسی به خوشه Redshift و Secrets Manager از Amazon ECS.
- یک خوشه Redshift. برای دستورالعمل های ایجاد، مراجعه کنید یک خوشه ایجاد کنید.
- یک مخزن ECR: برای دستورالعمل ها، مراجعه کنید ایجاد یک مخزن خصوصی
- مدیر اسرار راز حاوی تمام اعتبار برای اتصال به Amazon Redshift است. این شامل میزبان، پورت، نام پایگاه داده، نام کاربری و رمز عبور است. برای اطلاعات بیشتر مراجعه کنید یک راز پایگاه داده AWS Secrets Manager ایجاد کنید.
- An ذخیره سازی ساده آمازون سطل (Amazon S3) برای میزبانی فایل های مستندات.
یک پروژه dbt ایجاد کنید
ما از dbt CLI استفاده می کنیم بنابراین همه دستورات در خط فرمان اجرا می شوند. بنابراین، اگر از قبل نصب نشده است، پیپ را نصب کنید. رجوع شود به نصب و راه اندازی برای اطلاعات بیشتر.
برای ایجاد پروژه dbt مراحل زیر را انجام دهید:
- بسته های dbt وابسته را نصب کنید:
pip install dbt-redshift
- یک پروژه dbt را با استفاده از
dbt init <project_name>
دستور، که تمام پوشه های قالب را به طور خودکار ایجاد می کند. - تمام مصنوعات DBT مورد نیاز را اضافه کنید.
به dbt-redshift-etlpattern مخزن که شامل یک پروژه dbt مرجع است. برای اطلاعات بیشتر در مورد پروژه های ساختمانی مراجعه کنید درباره پروژه های dbt.
در پروژه مرجع، ویژگی های زیر را پیاده سازی کرده ایم:
- SCD نوع 1 با استفاده از مدل های افزایشی
- SCD نوع 2 با استفاده از عکس های فوری
- فایل های جستجوی بذر
- ماکرو برای افزودن کد قابل استفاده مجدد در پروژه
- تست هایی برای تجزیه و تحلیل داده های ورودی
اسکریپت پایتون برای دریافت اعتبار مورد نیاز از Secrets Manager برای دسترسی به Amazon Redshift آماده شده است. رجوع به export_redshift_connection.py فایل.
- آماده کنید
run_dbt.sh
اسکریپت برای اجرای متوالی خط لوله dbt. این اسکریپت همانطور که در نمونه مخزن نشان داده شده است در پوشه ریشه پروژه dbt قرار می گیرد.
- یک فایل Docker در دایرکتوری والد پوشه پروژه dbt ایجاد کنید. این مرحله تصویر پروژه dbt را می سازد تا به مخزن ECR منتقل شود.
تصویر را در Amazon ECR آپلود کنید و آن را به عنوان یک کار ECS اجرا کنید
برای انتقال تصویر به مخزن ECR، مراحل زیر را انجام دهید:
- یک نشانه احراز هویت را بازیابی کنید و کلاینت Docker خود را در رجیستری خود احراز هویت کنید:
- با استفاده از دستور زیر، تصویر Docker خود را بسازید:
- پس از تکمیل ساخت، تصویر خود را تگ کنید تا بتوانید آن را به مخزن فشار دهید:
- دستور زیر را اجرا کنید تا تصویر را به مخزن جدید AWS خود منتقل کنید:
- در کنسول آمازون ECS، یک کلاستر با Fargate به عنوان یک گزینه زیرساخت ایجاد کنید.
- VPC و زیرشبکه های خود را در صورت نیاز ارائه دهید.
- پس از ایجاد کلاستر، یک کار ECS ایجاد کنید و تصویر dbt ایجاد شده را به عنوان خانواده تعریف کار اختصاص دهید.
- در بخش شبکه، VPC، زیرشبکهها و گروه امنیتی خود را برای ارتباط با Amazon Redshift، Amazon S3 و Secrets Manager انتخاب کنید.
این کار باعث می شود run_dbt.sh
خط لوله را اسکریپت کنید و تمام دستورات dbt را به صورت متوالی اجرا کنید. وقتی اسکریپت کامل شد، میتوانیم نتایج را در Amazon Redshift و فایلهای اسنادی که به Amazon S3 فرستاده شدهاند، ببینیم.
- شما می توانید اسناد را از طریق میزبانی وب سایت استاتیک آمازون S3 میزبانی کنید. برای اطلاعات بیشتر مراجعه کنید میزبانی وب سایت ایستا با استفاده از آمازون S3.
- در نهایت، می توانید این کار را در Step Functions به عنوان یک کار ECS اجرا کنید تا کارهای مورد نیاز را برنامه ریزی کنید. برای اطلاعات بیشتر مراجعه کنید وظایف Amazon ECS یا Fargate را با توابع Step مدیریت کنید.
La dbt-redshift-etlpattern repo اکنون تمام نمونه کدهای مورد نیاز را دارد.
هزینه اجرای کارهای dbt در AWS Fargate به عنوان یک کار Amazon ECS با حداقل نیازهای عملیاتی حدود 1.5 دلار است (هزینه_لینک) هر ماه.
پاک کردن
مراحل زیر را برای پاکسازی منابع خود انجام دهید:
- ECS Cluster را حذف کنید شما ایجاد کردید
- مخزن ECR را حذف کنید شما برای ذخیره فایل های تصویری ایجاد کرده اید.
- Redshift Cluster را حذف کنید شما ایجاد کردید
- Redshift Secrets را حذف کنید ذخیره شده در Secrets Manager.
نتیجه
این پست پیاده سازی اساسی استفاده از dbt با Amazon Redshift را به روشی مقرون به صرفه با استفاده از Fargate در Amazon ECS پوشش می دهد. ما زیرساخت های کلیدی و تنظیمات پیکربندی را با یک پروژه نمونه توضیح دادیم. این معماری می تواند به شما کمک کند از مزایای داشتن چارچوب dbt برای مدیریت پلت فرم انبار داده خود در Amazon Redshift بهره ببرید.
برای اطلاعات بیشتر در مورد ماکروهای dbt و مدلهای عملکرد و نگهداری داخلی Amazon Redshift، به موارد زیر مراجعه کنید. GitHub repo. در پست بعدی، الگوهای سنتی استخراج، تبدیل و بارگذاری (ETL) را که میتوانید با استفاده از چارچوب dbt در Amazon Redshift پیادهسازی کنید، بررسی خواهیم کرد. این راه حل را در حساب خود آزمایش کنید و نظرات یا پیشنهادات خود را در نظرات ارائه دهید.
درباره نویسنده
سهشادری سنتهامارایکانان یک معمار داده با تیم خدمات حرفه ای AWS مستقر در لندن، انگلستان است. او در تجزیه و تحلیل داده ها باتجربه و متخصص است و با مشتریانی کار می کند که بر روی ساخت راه حل های نوآورانه و مقیاس پذیر در AWS Cloud برای رسیدن به اهداف تجاری خود تمرکز می کنند. در اوقات فراغت از گذراندن اوقات فراغت با خانواده و ورزش لذت می برد.
محمد همدی یک معمار ارشد داده های بزرگ با خدمات حرفه ای AWS مستقر در لندن، انگلستان است. او بیش از 15 سال تجربه معماری، رهبری و ساخت انبارهای داده و پلتفرم های کلان داده را دارد. او به مشتریان کمک می کند تا راه حل های کلان داده و تجزیه و تحلیل را برای تسریع نتایج کسب و کار خود از طریق سفر پذیرش ابری خود توسعه دهند. محمد خارج از محل کار، مسافرت، دویدن، شنا و بازی اسکواش را دوست دارد.
- محتوای مبتنی بر SEO و توزیع روابط عمومی. امروز تقویت شوید.
- PlatoData.Network Vertical Generative Ai. به خودت قدرت بده دسترسی به اینجا.
- PlatoAiStream. هوش وب 3 دانش تقویت شده دسترسی به اینجا.
- PlatoESG. کربن ، CleanTech، انرژی، محیط، خورشیدی، مدیریت پسماند دسترسی به اینجا.
- PlatoHealth. هوش بیوتکنولوژی و آزمایشات بالینی. دسترسی به اینجا.
- منبع: https://aws.amazon.com/blogs/big-data/implement-data-warehousing-solution-using-dbt-on-amazon-redshift/
- : دارد
- :است
- :نه
- $UP
- 1
- 10
- 11
- سال 15
- ٪۱۰۰
- 7
- 8
- 90
- 970
- a
- درباره ما
- شتاب دادن
- دسترسی
- دسترسی
- حساب
- در میان
- اضافه کردن
- اضافه کردن
- اتخاذ
- مزیت - فایده - سود - منفعت
- معرفی
- اجازه می دهد تا
- قبلا
- همچنین
- آمازون
- آمازون خدمات وب
- an
- تحلیل
- تحلیلی
- علم تجزیه و تحلیل
- تجزیه و تحلیل
- و
- اعمال میشود
- معماری
- هستند
- دور و بر
- AS
- تصدیق کردن
- تصدیق
- بطور خودکار
- AWS
- خدمات حرفه ای AWS
- مستقر
- اساسی
- BE
- مزایای
- میان
- بزرگ
- بزرگ داده
- ساختن
- بنا
- می سازد
- کسب و کار
- by
- CAN
- اهميت دادن
- موارد
- کاتالوگ
- به چالش
- تبادل
- متغیر
- را انتخاب کنید
- تمیز
- مشتری
- ابر
- پذیرش ابر
- خوشه
- رمز
- نظرات
- مشترک
- کامل
- پیچیده
- موافق
- اجزاء
- پیکر بندی
- پیکربندی
- اتصال
- اتصال
- ارتباط
- کنسول
- ظرف
- شامل
- محتویات
- مقرون به صرفه
- پوشش داده شده
- ایجاد
- ایجاد شده
- ایجاد
- ایجاد
- مجوزها و اعتبارات
- سفارشی
- مشتریان
- DAG
- داده ها
- تحلیل داده ها
- تجزیه و تحلیل داده ها
- انبار داده
- انبارهای داده
- پایگاه داده
- به طور پیش فرض
- تعریف
- وابسته
- شرح داده شده
- طرح
- برنامه نویس
- توسعه
- توسعه دهندگان
- مختلف
- مستقیما
- کارگر بارانداز
- مستندات
- میکند
- در طی
- هر
- را قادر می سازد
- مهندسی
- شرکت
- محیط
- محیط
- اتر (ETH)
- اجرا کردن
- تجربه
- با تجربه
- اکتشاف
- خارجی
- عصاره
- خیلی
- نتواند
- خانواده
- امکانات
- باز خورد
- پرونده
- فایل ها
- پیدا کردن
- تمرکز
- تمرکز
- پیروی
- به دنبال آن است
- برای
- چارچوب
- از جانب
- کامل
- تابعی
- توابع
- سوالات عمومی
- تولید می کنند
- رفتن
- اهداف
- خوب
- گراف
- گروه
- گروه ها
- آیا
- داشتن
- he
- کمک
- کمک می کند
- اینجا کلیک نمایید
- عملکرد بالا
- خود را
- میزبان
- میزبانی وب
- چگونه
- HTML
- HTTPS
- شناسایی
- if
- نشان می دهد
- تصویر
- تصاویر
- انجام
- پیاده سازی
- اجرا
- واردات
- واردات
- in
- در دیگر
- شامل
- از جمله
- گنجاندن
- افزایشی
- اطلاعات
- شالوده
- ابتکاری
- نصب
- نصب شده
- دستورالعمل
- ادغام
- داخلی
- به
- معرفی
- IT
- کار
- شغل ها
- سفر
- json
- کلید
- زبان ها
- آخرین
- برجسته
- کتابخانه ها
- پسندیدن
- دوست دارد
- لاین
- اصل و نسب
- بار
- منطق
- ورود
- لندن
- نگاه کنيد
- مقدار زیادی
- ماکرو
- نگهداری
- نگهداری
- ساخت
- مدیریت
- مدیر
- مدیریت
- انبوه
- مکانیزم
- دیدار
- حداقل
- مدل
- مدل
- واحد
- محمد
- ماه
- بیش
- چندگانه
- نام
- تحت عنوان
- لازم
- شبکه
- به تازگی
- اکنون
- of
- پیشنهادات
- on
- باز کن
- منبع باز
- عمل
- قابل استفاده
- بهینه
- گزینه
- or
- تنظیم و ارکستراسیون
- دیگر
- ما
- نتایج
- خروجی
- خارج از
- روی
- مروری
- بسته
- موازی
- عبور می کند
- کلمه عبور
- الگوهای
- برای
- اجازه
- قطعات
- خط لوله
- قرار داده شده
- سکو
- سیستم عامل
- افلاطون
- هوش داده افلاطون
- PlatoData
- بازی
- بازی
- پست
- تهیه
- آماده شده
- آماده
- پیش نیازها
- اصلی
- از اصول
- خصوصی
- در حال پردازش
- حرفه ای
- مشخصات
- پروفایل
- برنامه نويسي
- زبانهای برنامه نویسی
- پروژه
- پروژه ها
- ارائه
- فراهم می کند
- فشار
- تحت فشار قرار دادند
- پــایتــون
- نمایش ها
- مراجعه
- مرجع
- رجیستری
- مخزن
- نیاز
- ضروری
- مورد نیاز
- نیاز
- منابع
- REST
- نتایج
- قابل استفاده مجدد
- نقش
- ریشه
- ROW
- دویدن
- در حال اجرا
- نگهداری می شود
- مقیاس پذیر
- برنامه
- خط
- ثانیه
- اسرار
- بخش
- تیم امنیت لاتاری
- دیدن
- دانه
- دانه
- ارشد
- دنباله
- سرویس
- خدمات
- تنظیم
- محیط
- باید
- نشان داده شده
- نشان می دهد
- ساده
- به آرامی
- عکس فوری
- So
- نرم افزار
- مهندسی نرم افزار
- راه حل
- مزایا
- منبع
- منابع
- تخصصی
- هزینه
- ورزش ها
- SQL
- بیانیه
- اظهارات
- ایستا
- گام
- مراحل
- opbevare
- ذخیره شده
- زیرشبکه ها
- متعاقب
- چنین
- شنا
- جدول
- TAG
- گرفتن
- صورت گرفته
- هدف
- کار
- وظایف
- تیم
- گفتن
- قالب
- آزمون
- تست
- که
- La
- شان
- آنها
- سپس
- از این رو
- اینها
- آنها
- این
- از طریق
- زمان
- زمان بر
- بار
- به
- رمز
- سنتی
- دگرگون کردن
- دگرگونی
- ماشه
- باعث شد
- نوع
- به طور معمول
- Uk
- درک
- استفاده کنید
- استفاده
- مفید
- کاربر
- استفاده
- با استفاده از
- آب و برق
- از طريق
- چشم انداز
- انبار کالا
- انبارداری
- مسیر..
- we
- وب
- خدمات وب
- سایت اینترنتی
- خوب
- چه زمانی
- که
- در حین
- ویکیپدیا
- اراده
- با
- در داخل
- مهاجرت کاری
- گردش کار
- با این نسخهها کار
- خواهد بود
- کتبی
- سال
- شما
- شما
- خودت
- زفیرنت