بیایید با 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
در لینکدین: لوکاس بارت