ETL vs ELT
- ●ETL-এ data extract করে আলাদা জায়গায় transform করে তারপর warehouse-এ load করা হয়।
- ●ELT-এ data আগে warehouse-এ load করে, transform পরে warehouse-এর ভিতরেই হয়।
- ●আধুনিক cloud warehouse শক্তিশালী হওয়ায় ELT এখন বেশি জনপ্রিয়।
সমস্যাটা কী?
তোমার data ছড়িয়ে আছে নানা জায়গায়—production database, Google Analytics, payment gateway-এর API, CSV ফাইল। analytics করতে হলে এই সব একটা জায়গায় (warehouse) আনতে হবে। কিন্তু কাঁচা data সরাসরি analytics-এর উপযোগী নয়—তারিখের format ভিন্ন, কিছু field খালি, currency আলাদা, ডুপ্লিকেট আছে।
তাই দুটো কাজ করতে হয়: (১) data সরিয়ে আনা এক জায়গায়, আর (২) data পরিষ্কার ও রূপান্তর করা। প্রশ্ন হলো—এই দুটো কোন ক্রমে করব? transform-টা load-এর আগে করব নাকি পরে? এই ক্রমের পার্থক্যই ETL আর ELT-এর মূল কথা।
মূল ধারণা
ETL = Extract → Transform → Load। data বের করে, আলাদা জায়গায় পরিষ্কার/রূপান্তর করে, তারপর warehouse-এ ঢোকানো হয়। ELT = Extract → Load → Transform। data বের করে সরাসরি warehouse-এ ঢুকিয়ে, তারপর warehouse-এর ভিতরেই transform করা হয়।
পার্থক্যটা শুধু একটা অক্ষরের জায়গা বদল, কিন্তু architecture-এ বিশাল প্রভাব ফেলে। ETL-এ transform হয় একটা আলাদা processing engine-এ (load-এর আগে)। ELT-এ transform হয় target warehouse-এর শক্তি দিয়ে (load-এর পরে)।
কীভাবে কাজ করে
ETL flow
- Extract: source থেকে data টানা হয়।
- Transform: একটা আলাদা server বা tool data পরিষ্কার করে, format ঠিক করে, aggregate করে।
- Load: তৈরি, পরিষ্কার data warehouse-এ লোড হয়।
মানে warehouse-এ শুধু চূড়ান্ত, পরিপাটি data ঢোকে। কিন্তু transform server আলাদা maintain করতে হয়, আর raw data warehouse-এ থাকে না।
ELT flow
- Extract: source থেকে data টানা হয়।
- Load: raw data সরাসরি warehouse-এ ঢালা হয় (staging area-তে)।
- Transform: warehouse-এর ভিতরেই SQL দিয়ে transform চালানো হয়—যেমন
dbtদিয়ে।
raw data warehouse-এ থেকে যায়, ফলে পরে আবার ভিন্নভাবে transform করা যায়। আধুনিক warehouse-এর প্রচুর compute থাকায় এই transform দ্রুত হয়।
তুলনামূলক টেবিল
| বৈশিষ্ট্য | ETL | ELT |
|---|---|---|
| Transform কোথায় | আলাদা engine | warehouse-এর ভিতরে |
| Raw data সংরক্ষণ | সাধারণত না | হ্যাঁ |
| Scalability | engine-এর সীমা | warehouse-এর সাথে scale |
| Flexibility | কম (আগেই fixed) | বেশি (পরে re-transform) |
| উপযুক্ত | sensitive/compliance data | বড় cloud analytics |
| Tool | Informatica, Talend | dbt + Snowflake/BigQuery |
রূপান্তর কোথায়
ভাবো তুমি কাঁচাবাজার থেকে সবজি কিনে রান্না করবে। ETL হলো—বাজারেই সবজি কেটে, ধুয়ে, পরিষ্কার করে তারপর ব্যাগে ভরে বাসায় আনলে। বাসায় (warehouse) শুধু রেডি জিনিস ঢুকল, কিন্তু বাজারে অনেক সময় গেল আর কাঁচা সবজি ফেলে এলে—পরে অন্য রেসিপি চাইলে আর পাবে না।
ELT হলো—সব কাঁচা সবজি আগে বাসায় (warehouse) এনে fridge-এ রাখলে, তারপর বাসার বড় রান্নাঘরে যখন যেমন দরকার তেমন কেটে রান্না করলে। বাসার রান্নাঘর বড় ও আধুনিক হলে (cloud warehouse) এটাই সুবিধাজনক, আর কাঁচা সবজি থাকায় ভবিষ্যতে নতুন রেসিপিও বানানো যায়।
কৌশল ও pipeline
বাস্তবে data pipeline এই extract-load-transform ধাপগুলো স্বয়ংক্রিয়ভাবে চালায়, সাধারণত একটা scheduler (যেমন Apache Airflow) দিয়ে। ELT-তে জনপ্রিয় প্যাটার্ন:
- Fivetran/Airbyte দিয়ে Extract + Load (source থেকে warehouse-এ raw data)।
- dbt দিয়ে warehouse-এর ভিতরে SQL-based Transform।
- Airflow দিয়ে পুরো প্রক্রিয়ার scheduling ও orchestration।
কখন ব্যবহার করবে / করবে না
- ETL বেছে নাও: যখন warehouse-এ ঢোকানোর আগেই data পরিষ্কার বা mask করা বাধ্যতামূলক (যেমন GDPR/PCI compliance—কার্ড নম্বর mask করে তবেই store), অথবা legacy on-prem warehouse-এর compute সীমিত।
- ELT বেছে নাও: যখন আধুনিক cloud warehouse আছে, raw data রাখতে চাও, দ্রুত iterate করতে চাও।
ELT-তে raw data সরাসরি warehouse-এ ঢোকে—এতে sensitive data (যেমন password hash, পুরো card number) ভুল করে staging-এ থেকে যেতে পারে এবং অনেকে access পেয়ে যেতে পারে। তাই ELT ব্যবহার করলে warehouse-এ কঠোর access control ও column-level masking নিশ্চিত করো; নয়তো compliance ভঙ্গ হবে।
বাস্তব উদাহরণ
একটা SaaS startup আগে ETL ব্যবহার করত—একটা Python script প্রতি রাতে database থেকে data টেনে clean করে warehouse-এ ঢোকাত। data বাড়লে script ধীর ও fragile হয়ে গেল।
তারা ELT-তে চলে গেল: Airbyte দিয়ে সব source-এর raw data সরাসরি Snowflake-এ load করল, তারপর dbt দিয়ে warehouse-এর ভিতরে SQL দিয়ে clean ও aggregate করল। ফলে pipeline সহজ হলো, raw data সংরক্ষিত থাকল, আর Snowflake-এর scalable compute কাজে লাগল।
ইন্টারভিউতে মনে রাখো—পার্থক্য শুধু transform-এর সময় ও স্থান। ETL: warehouse-এর বাইরে, load-এর আগে। ELT: warehouse-এর ভিতরে, load-এর পরে। আর একটা পয়েন্ট যোগ করলে নম্বর বাড়ে: "cloud warehouse-এর সস্তা scalable compute-এর কারণে ELT এখন default হয়ে গেছে।"
মিনি কুইজ
1. ELT-তে transformation কোথায় ঘটে?
2. ETL আধুনিক ELT-এর তুলনায় কোন ক্ষেত্রে এখনও কাজে লাগে?
3. ELT কেন cloud warehouse-এর যুগে জনপ্রিয় হয়েছে?