در بخش نخست آموزش انبار داده ها با مفهوم و ویژگی های انبار داده ها آشنا شدید. در این پست با اصلی ترین فرایند در یک انبار داده که به ETL یا Extracting Transformation Load آشنا خواهید شد. ETL برگرفته از Extracting Transformation Load و تکنولوژی رایج به کار رفته در انبار داده ها برای استخراج داده ها از محیط عملیاتی و تبدیل این داده مطابق با قواعد و فرمت انبار داده و نهایتا بارگذاری آنها در انبار داده.
استخراج داده ها از منابع داده ای توسط ابزارهای استخراج انجام شده و سپس توسط روتین های تبدیل به فرمت داده ای در انبار داده تبدیل می شوند. بررسی کیفیت و درستی داده ها و اصلاح داده بخشی از فرایند تبدیل در ETL است. نهایتا هنگامی که داده ها به فرمت انبار داده تبدیل شدند، در انبار داده بارگذاری شده و آماده نمایش هستند. پیش از ETL فرایند استخراج، تبدیل داده ها و بارگذاری آنها روندی پیچیده بود ولی با ظهور ETL انجام این فرایند ساده تر و با کدینگ کمتر، نگهداری و پشتیبانی ساده تر، تجزیه و تحلیل کارآمدتر و ویژگی های دیگری که این روند را ساده تر می سازد. به طور کلی هدف از ETL، جمع آوری داده از منابع و پایگاه داده های عملیاتی گوناگون و بار گذاری آنها درون انباره داده به منظور فرایند تصمیم سازی است.فرایند اینگونه است که نخست خروجی های مورد نیاز طراحی می شود، و این همان داده هایی هستند که از منبع مورد نیاز هستند. نکته مهم این است که فقط آن دسته از داده های مورد استفاده در انبار داده، باید در این فرایند از منبع استخراج شوند.
گام های ETL
ساده ترین گام در میان تمامی گام ها استخراج داده ها است، بطوریکه تنها باید جریان درستی از داده های منابع را که به ETL واگذز می شوند را تشخیص دهد. یعنی تنها آن دسته از داده هایی که برای انبار داده لازم هستند را از منابع استخراج کند. دو محدودیت تکنیکی در فرایند استخراج وجود دارد :
- منبع باید حداقل سربار را داشته باشد، چونکه دیگر فعالیت ها نیز در طول زمان استخراج وجود دارند.
- بنا به دلایل تکنیکی و سیاستی، مدیران تمایلی به مداخله در پیکربندی سیستم را ندارند، پس باید حداقل تعامل را در سمت منبع داشته باشند.
بسته به زیر ساخت و طبیعت منبع ( پایگاه داده های رابطه ای، صفحات وب، صفحه گسترده) و همچنین حجم داده هایی که پردازش شده اند، سیاست های متفاوتی برای استخراج به کار می رود که معمولا change data capture نامیده می شود. یک سیاست، استخراج تصویر لحضه ای از داده ها است که متعاقبا با تصویر لحضه ای قبلی داده ها مقایسه می شود و به این معنی است که تنها آن دسته از داده های تغییر کرده باید پردازش شوند. سیاست دیگر استفاده از Trigger در منبع زمانی که تغییری در داده ها ایجاد می شود. این روش تنها منابع از نوع پایگاه داده های رابطه ای قابل استفاده است.
در طول فرایند استخراج داده ها، از منابع عملیاتی گوناگون، ETL باید توسط کنترل کننده های ODBC/JDBC امکان برقراری با با پایگاه داده منبع و همچنین شناختی از ساختار داده ای آنرا داشته باشد. استخراج داده ها دارای دو فاز : آغاز استخراج و مبادله داده ها می باشد. در اولین فاز داده ها از منابع عملیاتی گوناگون دریافت می شوند. این فاز تنها یکبار پس از ایجاد انبار داده و به منظور پر کردن انبار داده از داده ها انجام می شود. استخراج تدریجی به منظور دو باره پر کردن انبار داده از داده های تغییر یافته از منابع عملیاتی است که توسط شیوه های گوناگونی مانند changed data capture انجام می شود. این پروسه به صورت دوره ای و مطابق با نیاز های سازمان انجام می گیرد.
معمولا درج داده های جدید در انبار داده در بازه های زمانی مشخصی صورت می گیرد. جلوگیری از ورود داده های تکرای بسیار اهمیت دارد پس باید مکانیزم هایی فراهم شود تا از درج داده های تکرای در انبار داده جلوگیری شود. انواع گوناگونی از روش ها برای تشخیص داده های بروز شده (تغییر یافته) وجود دارد. CDC یا Changed Data Capture راهکاری برای تشخیص داده های تغییر کرده. بدون CDC فرایند استخراج داده ها از پایگاه داده بسیار پرزحمت می شد زیرا که باید تمامی محتوای جداول را به یک فایل منتقل و سپس آن فایل را درون انبار داده بار گذاری می کردید. توجه به اینکه در انبار داده، عمل بروز کردن داده ها صورت نمی گیرد، بلکه مقادیر جدید و تغییر یافته یک داده بصورت رکوردی جدید در انبار ذخیره می شوند. درون بانک های اطلاعاتی مدرن، امکاناتی فراهم شده که در صورت فعال شدن، در صورت بروز در آمدن داده ای، به صورت خودکار ETL متوجه شده و پروسه های از قبل تعریف شده ای را اجرا می نماید. اما برای استفاده این راهکار باید بانک عملیاتی و ETL تولید یک سازنده باشند. در رویکرد CDC از Log ها برای نگهداری تغییرات داده ها استفاده می شود و باعث می شود تا در زمان درج داده ها فقط از نقطه زمان تغییرات، آن داده درج شود.
توسط Push پروسه ETL، داده ها را در یک بازه زمانی ازCDC تنها داده های تغییر یافته را استخراج می کند. توسط Pull چنانچه RTL داده ای را از محیط عملیاتی نیاز داشته باشد، درخواست داده ها را از منبع عملیاتی می دهد و داده ها را دریافت می کند. در عمل Push بدون اینکه ETL درخواستی داده باشد ارسال داده ها توسط سیستم های عملیاتی انجام می گیرد. تصاویر زیر Push و Pull را نشان می دهند.
مکانیزم Push
مکانیزم Pull
هنگامی که ستونی به جدولی از منبع عملیاتی یا تغییر فایلی در محیط عملیاتی انجام می شود فرایند زیر صورت می گیرد :
- قطع (اتمام)، فرایند Data Capture
- استخراج داده ها به درون انبار داده
- ایجاد تغییرات در پایگاه داده منبع و انبار داده
- شروع فرایند Data Capture
- از سر گیری اجرای پروسه ETL
تصفیه داده ها
پالایش داده ها فاز مهم در انبار داده ها هستند و باعث بهبود کیفیت داده ها می شود. در ادامه برخی از خطاها که بر کیفیت داده تاثیر می گذارند :
- داده های تکراری
- مقادیر نامناسبی که منطقا اختصاص داده شده اند
- گم شدن داده ها
- مقادیر نا ممکن یا اشتباه
دو ویژگی اصلی پالایش (تصفیه) داده ها اصلاح و هم جنس شدگی داده های منبع است. از یک دیگشنری برای اصلاح اشتباهات که مبتنی بر قواعد پالایش انجام می شود. داده هایی که بدون ارزش معنایی و یا بسیار قدیمی که دیگر استفاده ای برای سازمان ندارند و همچنین داده های تکرای و در تناقض، به انبار داده وارد نخواهند شد. البته حذف داده های قدیمی در انبار داده وجود ندارد زیرا که در انبار داده تاریخچه ای از داده نگاه داشته می شود، اما آن دسته از داده های قدیمی بی فایده حذف خواهند شد.
تبدیل داده ها
در این گام، داده های محیط عملیاتی به فرمت داده های درون انبار داده تبدیل می شوند. به بیان بهتر، نگاشتی میان داده های منابع گوناگون عملیاتی که از نظر داده ناهمگون هستند به فرمت مشخص و معین برای ذخیره شدن درون انبار داده، انجام می گیرد. در حین انجام تبدیل سه پروسه زیر اتفاق می افتد :
- تبدیل و نرمال سازی : برای ایجاد شکل و فرمت یکسان داده ها
- تطبیق دهی : متهد کردن داده های عملیاتی در زمینه های معادل
- گزینش : تبدیل تعدادی از داده های عملیاتی
نرمال کردن داده ها سبب می شود تا اطلاعات تکراری به جداول جداگانه ای انتقال یابند. پس نرمال کردن اطلاعات سبب افزایش تعداد جداول می شوند که خود لازم است به نحوی با سایر جداول در ارتباط باشند ولی از سویی چون داده ها تکرای نمی باشند فضای کمتری را اشغال می کنند. هنگامی که داده ها را در انبار داده جمع آوری می کنیم، به شکل denormalization ذخیره می شوند، به همین خاطر داده ها باید به صورت مناسبی خلاصه سازی شوند. در شکل زیر داده ها از محیط عملیاتی (یک Flat File) استخراج شده و نرمال سازی روی آنها انجام می گیرد. سپس استاندارد سازی و اصلاح شده و نهایتا در انبار داده ذخیره می شوند.
بار گذاری
آخرین گام در ETL بار گذاری داده های تصفیه شده و تبدیل شده به فرمت انبار داده می باشد. بارگذاری می تواند به دو روش صورت گیرد :
-
Refresh : داده های انبار داده بطور کامل بازنویسی می شوند و به این معنی است که جایگزین داده های قدیمی تر می شوند.
-
Update : تنها تغییرات در داده های منبع درون انبار داده درج می شوند. بروز رسانی ها بدون حذف یا تغییر مقادیر قبلی داده، درون انبار داده درج می شوند .پس تاریخچه ای از داده ها را خواهیم داشت.
مولفه های انبار داده
به جز دو مولفه اصلی در انبار داده ها، یعنی داده های منابع عملیاتی و فرایند ETL، انبار داده مولفه های دیگری دارد. داده های ناهمگن از منابع گوناگون وارد می شوند و توسط فرایند ETL، پالایش و تبدیل به فرمت انبار داده می شوند. طول عمر داده ها در این بخش بسیار کوتاه است و به محض آماده سازی به انبار داده تزریق می شوند. قلب سیستم های انبار داده، Detailed Data جایی که حجم بالایی از داده ها نگه داری می شوند. Detailed Data مستقیما از سیستم های عملیاتی می آیند. هر داده در Detailed Data یک Snapshot لحظه ای از زمان است و این بدان معناست که داده های قدیمی تر نیز در همین بخش نگهداری می شوند. طول عمر داده ها در این بخش به 2 یا پنج سال می رسد و شاید در مواردی به مدت طولانی تری نگه داری شوند. اما پس از چند سال داده ها غیر کارا می شوند و پس از تهیه پشتیبانی از آنها، حذف می شوند.
داده ها هر چه دارای جزئیات بیشتری باشند در سطح پایین تری از Granularity قرار می گیرند و بلعکس هر چه خلاصه تر باشند در سطح بالاتری از Granularity قرار می گیرند. اطلاعات این بخش دقیقا از Detailed Data منتج می شوند و در حقیقت خلاصه ای از بخش Detailed Data می باشد. این بخش خود به دو زیر بخش تقسیم می شود.
داده Lightly Summarized : تمامی اِلمان ها اطلاعات مشابهی را نیاز ندارند و اطلاعات این بخش بر اساس پارامتر های خاصی خلاصه سازی می شوند.
داده Highly Summarized : نسبت به سطح پیشین، خلاصه سازی بیشتری وجود دارد.
خواص انبار داده
یک انبار داده دارای خواص کلیدی زیر است، که در طراحی و پیاده سازی آن اهمیت دارد :
-
جداسازی : فرایند های تحلیلی و تراکنشی باید از یکدیگر جدا نگه داشته شوند.
-
مقیاس پذیری : معماری های نرم افزاری و سخت افزاری همچون حجم داده باید ارتقا یابند.
-
قابلیت گسترش : یک معماری باید قابلیت میزبانی از کاربردهای جدید بدون طراحی مجدد کل سیستم را داشته باشد.
- امنیت : نظارت و کنترل دسترسی به دلیل وجود داده های راهبردی، بسیار مهم است.
- اداره کردن : مدیریت انبار داده ها نباید بیش از حد دشوار است.
سیستم های عملیاتی OLAP به منظور پاسخ گویی به درخواست های روزانه به کار می روند و مقادیر داده های آنها بیانگر مقدار های فعلی هستند، در صورتی که یک سیستم OLAP به منظور آنالیز داده ها بکار می رود. در انبار داده ها از OLAP استفاده می شود و سابقه ای از داده برای مدت های طولانی (مانند 5 تا 10 سال) نگه داری می شوند. در سیستم های انبار داده بر خلاف سیستم های عملیاتی اعمالی مانند بروز رسانی، حذف داده ها را نداریم بلکه فقط عمل “خواندن” داده ها را داریم و می توان گفت داده ای از انبار داده حذف نمی شود بلکه مقدار جدید آن با حفظ مقادیر قبلی درج خواهد شد. کاربرانی که با یک سیستم عملیاتی مانند OLTP کار می کنند اپراتور ها و کاربران نهایی یا برنامه هایی هستند که تراکنش های بسیاری روی سیستم انجام می دهند ولی تعداد کاربران یک سیستم OLAP یا هر سیستم دیگری بسیار محدود است و مختص مدیران و افراد متخصص برای فرایند تحلیل و تصمیم سازی از داده ها است.
یکی از تفاوت ها میان یک سیستم عملیاتی با انبار داده در این است که، انبار داده یک محصول نیست که آنرا از کمپانی یا شرکتی خریداری کنیم، بلکه انبار داده خود بخشی از یک فرایند است که منتج به تحلیل و گردآوری انبوهی از داده ها به منظور فرایند تصمیم سازی می شود. مسائل و دانش های دیگری مانند داده کاوی، کیفیت داده ها و … نیز شامل این فرایند هستند.
داده کاوی جهت جستجوی الگو های گوناگون میان داده ها است. بطور مثال برای پیش بینی علائق یک خریدار از فروشگاه که با توجه به پیشینه خرید های او، می توانیم پیش بینی کنیم که علائق او چیست و پیشنهاد هایی را به او بدهیم.