بخش های از فصل پنجم

تخمین حجم پایگاده داده و سایر نیازمندی‌های دیسک

  • تخمین حجم برای موارد زیر نیاز است:
  • پایگاه داده
  • سایر فضاهای مورد نیاز

یک عامل موفقیت انبار داده توانایی و برنامه‌ریزی برای  تخمین حجم فیزیکی پایگاه داده است. به عنوان مثال، برای جداول، VIEWها و ایندکس‌ها چه مقدار فضایی مور نیاز است, مقدار فضای مورد نیاز باید موارد زیر را در نظر داشته باشید:

  • معماری پیاده سازی انبار داده
  • فعالیت‌های backup و recovery
  • تکنیکهای mirror کردن انبارداده
  • فضای موقت و تکنیکهای بارگذاری

تخمین اندازه پایگاه داده

برای تخمین زدن دقیق‌تر حجم پایگاه داده باید موارد زیر را انجام دهید:

  1. اندازه هر رکورد در جدول فکت را تخمین بزنید.
  2. میزان رشد بعد را اندازه‌گیری کنید.
  3. ارزیابی کنید که آیا جدول فکت پراکنده است یا متراکم و کاهش یا افزایش اندازه پایگاه داده را تخمین بزنید.

چندین گام اضافه برای جلوگیری از تکه تکه شدن داده‌های انبار داده وجود دارد که می‌تواند نتیجه‌ مثبتی بر میزان کارایی انبار داده داشته باشد. مواردی که باید در نظر داشته باشید شامل موارد زیر است:

اندازه بلاک چون تأثیر‌ بسزایی در کارایی دارد.

  • بلاک‌ها باید شامل فضای PCTREE مناسب باشند
  • باید فضای مورد نیاز برای ایندکس‌ها و جداول را تخمین بزنید.
  • باید برنامه‌ریزی مناسب برای فضای مربوط به عملیات temporary tablespace, system tablespace در نظر بگیرید.
  • پیشنهاد می‌شود که فضایی معادل 3 یا 4 برابر داده‌های جداول، ایندکس‌ها و داده‌ها مربوط به خلاصه‌سازی در نظر بگیرید.

مزایای بهبود کارایی پارتیشن(partition pruning)

 

براساس دستور SQL، نوشته شده اوراکل فقط پارتیشن‌ها و زیر پارتیشن‌هایی که نیاز به دسترسی دارد را شناسایی می‌کند. نام این بهینه‌سازی partition pruning است Partition Pruning می‌تواند تأیید غیر قابل باوری بر بهبود کارایی داشته باشد.

اگر دستورات SQL یک تابع را بر روی ستون پارتیشن صدا کنند Optimizer نمی‌تواند پارتیشن‌های غیر قابل استفاده را حذف کند.

برش دادن بصورت اتوماتیک توسط optimizer انجام می‌شود. اگر هر پارتیشن جدول Sales در مثال فوق شامل یک میلیون رکورد باشد با اجرای پرس‌وجوی بالا 50% از محتوای جدول جهت واکشی و پیمایش حذف خواهد شد، بدون پارتیشن‌بندی کردن Optimizer جدول تمام جدول را پیمایش می‌کند.

partition pruning در کاهش حجم بلاک‌هایی که باید مورد پیمایش قرار بگیرد تأثیر مؤثری دارد. در مثال فوق پارتیشن‌بندی کردن با استفاده از بازه بیان شده است.

بهینه‌سازی عملکرد پرس‌وجوهای ستاره‌ای:

  • برای هر ستون FK جدول یا جداول Fact باید یک ایندکس Bitmap ایجاد شود.
  • مقداردهی پارامت Star_transfornation برابر با true باشد
  • فعال کردن این پارامتر برای استفاده از قابلیت بهینه‌سازی پرس‌وجوهای ستاره‌ای مهم است.
  • بصورت پیش فرض مقدار این پارامتر برابر با false است
  • مقادیر مجاز شامل این پارامتر شامل true , false و null می‌باشد.

برای دریافت بهترین کارایی برای پرس‌وجوهای ستاره‌ای رعایت دستورالعمل زیر مهم است.

  • پارامتر Star_transformation_enable باید با true مقدار دهی شده باشد
  • برای هر ستون FK در جدول FACT باید یک ایندکس Bitmap ایجاد شود.
  • فعال شدن قابلیت بهینه‌سازی پرس‌وجوهای ستاره‌ای وابسته به این پارامتر است و بصورت پیش فرض برای سیستم‌های OLTP دارای مقدار false است.

وقتی یک انبار داده این شرایط را فراهم کرد پرس‌وجوهای ستاره‌ای که در انبار داده اهمیت بالای دارند از استراتژی تغییر شکل دادن استفاده می‌کنند. تغییر شکل دادن ستاره‌ای تکنیکی است که به اجرای سریع‌تر پرس‌وجوها کمک می کند.

بهینه‌سازی پرس‌وجوهای ستاره‌ای: تغییر شکل دادن ستاره‌ای

  • تغییر شکل دادن ستاره‌ای یک تکنیک بهینه‌سازی است که بصورت ضمنی (Implicit) پرس‌وجوی ستاره‌ای را بازنویسی می‌کند.

یک پرس‌وجوی ستاره‌ای در دو فاز پردازش می‌شود:

  • ایجاد کردن یک مجموعه نتیجه، واکشی رکوردهای مورد نیاز از جدول FACT
  • اتصال نتیجه به جداول بعد

تغییر شکل دادن ستاره‌ای نیاز به وجود یک ایندکس Bitmap‌ تک ستونی بر روی هر ستونی از جدول واقعیت دارد.

Optimizer اوراکل بصورت اتوماتیک تغییر شکل ستاره‌ای را در دو فاز انجام میدهد

  • فاز اول واکشی داده‌های مورد نیاز از جدول فکت (مجموعه خروجی) چون این واکشی از ایندکس‌های Bitmap استفاده می‌کند خیلی مؤثر است.
  • فاز دوم اتصال مجموعه نتیجه با جداول بعد که به این عملیات semijoin‌ می‌گویند.

یک سوال کاربر می‌تواند به این صورت باشد فروش و سود برای سازمان‌های خواربار موجود در شرق و شمال شرق در طول 3 فصل گذشته چقدر بوده است؟

این یک پرس‌وجوی ستاره‌ای ساده است. یک پیش نیاز برای تغییر شکل دادن ستاره‌ای وجود ایندکس Bitmap‌ یک ستونی بر روی هر ستونی است که در join شرکت داده می‌شود این ستون‌های اتصال در جدول واقعیت (Fact) همان ستون‌های کلید خارجی است.

نکته: ایندکس Bitmap فقط برای اوراکل نسخه جامع (Enterprise) وجود دارد. و در نسخه استاندارد (Standard) کار نمی‌کند.

به پرس‌وجوی ستاره‌ای مثال ذیل دقت کنید، برای پشتیبانی از تغییر شکل ستاره‌ای در نظر داشته باشید که بر روی ستون‌های Channel_Id , time_Id و Cust_Id در جدول sales اسکیمای Sh ایندکس bitmap تعریف شده است.

امنیت در انبار داده

چرا امنیت در انبار داده مهم است؟

  • به منظور جلوگیری از دسترسی‌های غیر مجاز
  • به منظور اجتناب از خطر هکرها
  • به منظور ارائه داده صحیح برای مجموعه صحیح کاربران
  • و برای حفظ یک رکورد از فعالیت‌های کاربر امنیت در انبار داده اهمیت فروانی دارد.

در انبار داده همواره باید مجموعه‌ای از چالش‌های امنیت را در نظر داشته باشید، انبار داده‌ها معمولاً سیستم‌های خیلی بزرگی هستند که اغلب نیاز به اعمال سطوح دسترسی‌های مختلف برای تعامل با کاربران دارند. امنیت باید در هسته انبار داده پیاده‌سازی شود، بنابراین در نظر گرفتن انتظارات امنیت زمانی که در حال نهایی کردن مدل فیزیکی هستید اهمیت فراوانی دارد.

چرا امنیت برای یک انبار داده مهم است

در پایگاه داده اوراکل تعدادی از نیازمندی های پایه ای امنیت بخوبی پیاده‌سازی شده است و به عنوان مثال:

برنامه باید از دسترسی داشتن یا تغییر داده داده‌ها توسط کاربران غیر مجاز جلوگیری کند. برنامه‌ها و داده‌های زیر مجموعه نباید قابل حمله توسط هکرها باشند. داده باید در زمان درست و به کاربران درست ارائه شود و سیستم باید یک ذخیره‌ای از فعالیت‌های انجام شده توسط کاربران داشته باشند. پیاده‌سازی این نیازمندی‌ها در انبار داده مهم‌تر است چون با تعریف یک انبار داده شامل داده‌های تلفیق شده از چندین منبع را جمع‌آوری کرده‌ای و کاربران به راحتی می‌توانند به داده‌های مورد نظر خود دسترسی پیدا کنند.

ابزارهای پیاده‌سازی امنیت در اوراکل

پایگاه داده اوراکل چندین پکیج PL/SQL را برای پیاده‌سازی امنیت ارائه کرده است مانند DBMS_SESSION ، DBMS_LOCK  توابعی مانند SYS_CONTEXT که به پیاده‌سازی امنیت در انبارداده کمک می‌کنند.

DBMS_RLS: با استفاده از این پکیج، می‌توانید قوانین امنیت را پیاده‌سازی کنید. پکیج DBMS_RLS شامل رویه‌ها و توابعی مانند (ADD_POLICY) و (DROP_POLICY) است. که به شما امکان می‌دهند قوانین امنیت را اضافه، حذف یا بروزرسانی و کنید.

DBMS_SESSION: این پکیج به شما امکان دسترسی به اطلاعات دسترسی به اطلاعات Sessionها را می دهد.

همچنین می‌توانید از این پکیج برای پیاده‌سازی مجموعه اولویت‌ها و سطح‌های  امنیت استفاده کنید. می‌توانید از برنامه‌های پکیج dbms_session برای نگهداری و شمارش محتوای برنامه‌ها استفاده کنید.

نکته: DBAها یا برنامه نویسان می‌توانند از دستور create context برای نگهداری محتوای برنامه‌ها استفاده کنند.

SYS_Conrext: این تابع می‌توانید با استفاده از مقادیر خصوصیت‌ها مانند خصوصیت‌های Session و خصوصیت‌های تعریف شده توسط را بدست آورید.