برنامه نویسی

بیایید با Postgres ادغام شویم!

ماریا یکی از علاقه مندان به SQL است که برای The Coffee Company کار می کند. ماریا عمدتاً پایگاه‌های اطلاعاتی را مدیریت کرده و اطمینان حاصل کرده است که همه چیز به خوبی کار می‌کند.

به تازگی او کشف کرده است MERGE دستورات Postgres او می خواهد با این دستور یک Proof Of Concept در مورد بهبود ETL فرآیندهای شرکت ایجاد کند.

معماری داده ها

قبل از دستکاری هر داده، ماریا می خواهد ذهن خود را با معماری فعلی پایگاه داده تازه کند.

معماری داده در حال حاضر ساده است و شرکت نیازی به معماری پیچیده ندارد.

برای هر فرآیند ETL، داده ها ابتدا وارد طرح مرحله بندی می شوند. سپس، اگر همه چیز خوب باشد، می توانیم داده ها را در طرح تولید قرار دهیم.

او یک پایگاه داده POC با همان طرح ایجاد می کند تا از به هم ریختن پایگاه داده و طرح تولید جلوگیری کند.

پایگاه داده POC

آیا می دانستید که وقتی یک پایگاه داده در PostgreSQL ایجاد می کنید، از یک پایگاه داده قالب به نام template1 استفاده می کند؟ و پس از ایجاد پایگاه داده خود، طرحواره ها را با یک طرح مرحله بندی و یک طرح تولید با جداول موجود در آن ایجاد می کند.

CREATE DATABASE coffee_testing;
CREATE SCHEMA staging;
CREATE SCHEMA production;
CREATE TABLE staging.coffee_stock;
CREATE TABLE production.coffee_stock;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

قهوه فرآوری شده بهتر

اخیراً شرکت قهوه تصمیم گرفته است که برخی از منابع قهوه بدون کافئین را در پایگاه داده خود به روز کند و اضافه کند.

برای احترام بیشتر به محیط زیست، آنها تصمیم گرفته اند از طریق فرآیند SWP قهوه بدون کافئین اضافه کنند. و از طریق فرآیند با CO2 فشار بالا (فوق بحرانی) در دمای 31 درجه سانتی گراد به جای قهوه بدون کافئین شیمیایی.

این داده ها می توانند برای آزمایش فرآیند جدید ETL عالی باشند.

انتقال داده ها به جداول دیگر

MERGE INTO یک فرمان خاص Postgres است که این امکان را فراهم می کند:

می‌توانید داده‌های بارگذاری دسته‌ای را بارگیری کنید که با برخی شرایط در جداول مختلف، حتی جدول‌هایی از طرح‌واره‌های مختلف مطابقت دارند، اما نه از پایگاه‌های داده دیگر.

ماریا می‌خواهد داده‌های خود را از coffee_stock مرحله‌بندی به تولید قهوه_استاک در پایگاه داده آزمایشی خود منتقل کند.

مقداری قهوه بدون کافئین روی میز تولید وجود دارد، در حالی که برخی دیگر وجود ندارند. اگر این قهوه وجود داشته باشد، می خواهیم موجودی را به روز کنیم. اگر قهوه این کار را نکرد، می خواهیم قهوه و مقدار آن را وارد کنیم.

MERGE INTO production.coffee_stock cs
USING staging.coffee_stock cse
ON cs.coffee_id = cse.coffee_id
    WHEN MATCHED THEN
        UPDATE SET quantity = cse.quantity
    WHEN NOT MATCHED THEN 
        INSERT (coffee_id,quantity)
        VALUES (cse.coffee_id, cse.quantity)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

LGTM

پس از این آزمایش، او یک PR برای همکارانش برای بازخورد ارسال می کند. در اکثریت آنها آن را دوست داشتند و این می تواند به طور قابل توجهی ETL آنها را بهبود بخشد.

در واقع MERGE یک نحو ساده دارد و از استفاده از زبان رویه ای در پایگاه داده PostgreSQL ما اجتناب می کند.

می توانیم ببینیم کدام دستور SQL در چه شرایطی اجرا می شود. ما می توانیم دستورات اولیه DML (UPDATE, DELETE, INSERT) را با آن انجام دهیم.

اکنون ماریا کارهای زیادی برای مهاجرت ETL خود دارد. البته، او با یکی از موارد کمتر مهم شروع می کند تا آن را در تولید آزمایش کند، اطمینان حاصل کند که همه چیز خوب است، و سپس همه چیز را لقمه به لقمه منتقل می کند.

PS:

من نام ماریا را عمدا انتخاب نکردم، این به MariaDB مربوط نمی شد. اما من این سرگرمی را پیدا کردم پس بیایید آن را حفظ کنیم 🙂

در تماس باش

در توییتر : @yet_anotherDev

در لینکدین: لوکاس بارت

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا