ساختارهای فیزیکی در DB2 مانند تمام پایگاه داده ها بیشتر با فضاهای فیزیکی مرتبط با اشیا منطقی در ارتباط هستند. در این مقاله قبل از اینکه به ساختارهای فیزیکی DB2 بپردازیم لازم است با مفاهیم دیتاست و VSAM آشنا شویم.
دیتاست چیست؟
یکی از پرکابردترین سیستم عاملهایی که بر روی ماشینهای مِین فریم نصب میشود z/OS نام دارد. در سیستم عامل z/OS برای مدیریت دادهها از دیتاست استفاده میشود. دیتاستها نگهدارندههای داده به صورت فایل تنها یا مجموعهای از فایلها میباشند (دیتاستها، کاربردی شبیه به عملکرد فایل و فولدر در ویندوز دارند).
به دیتاستهایی که فقط یک فایل را نگهداری میکنند، دیتاست ترتیبی و به دیتاستهایی که مجموعهای از فایلها را نگهداری میکنند، دیتاست پارتیشنی اطلاق میگردد. انواع دیگری از دیتاست وجود دارند که با نام VSAM شناخته میشوند. در ادامه به توصیف دیتاستهای VSAM پرداخته و انواع آن را شرح میدهیم.
VSAM چیست؟
روشهای دسترسی متفاوتی در سیستمعامل برای خواندن داده از دیسک وجود دارد. یکی از این روشها VSAM میباشد. در ادامه درباره انواع VSAM صحبت میکنیم.
انواع فایلهای VSAM
دیتاستهای VSAM شامل فواصل کنترلی یا (CI) و فضاهای کنترلی موسوم به (CA) هستند. عمدتا سایز CA و CI بر اساس نوع فایل VSAM مشخص میشود. معمولا تعداد مشخصی CI در یک CA وجود دارد. هر فاصله کنترلی یا CI میتواند شامل چندین رکورد باشد.
ESDS-Entry Sequenced Dataset
ESDSها ممکن است دارای ایندکس باشند، که میتوانند در اینصورت توسط کلید قابل دسترس شوند. رکوردهای نوشته شده در فایل ESDS، بدون ساختار و با توجه به آدرس فیزیکی نوشته میشوند.
KSDS-Key Sequenced Dataset
KSDSها دارای دو قسمت ، قسمت ایندکس و قسمت داده هستند. این دو قسمت میتوانند حتی در دیسکهای جداگانه ذخیره شوند. یک KSDS ابتدایی، دارای یک ایندکس به عنوان کلید اصلی میباشد و در صورتیکه نیاز به کلید دوم باشد این کلید به عنوان کلید ثانویه یا ایندکس جایگزین (AIX) شناخته میشود.
این نوع ایندکس، خود یک ساختار KSDS دارد که امروزه به عنوان B+ tree شناخته میشود.
RRDS-Relative Record Dataset
RRDS ممکن است دارای ایندکسی باشد که دسترسی به آن با تعریف کلید AIX فعال میشود.
LDS-Linear Dataset
LDS یک نوع دیتاست VSAM بدون ساختار است که توسط CI های که سایز آن مضربی از ۴K است ساخته شده و جهت سرویسهای سیستم مورد استفاده قرار میگیرد.
فضای جدولی (Table Space)
فضای جدولی، دیتاستهای VSAM بر روی دیسکهای یک گروه ذخیرهساز هستند که حاوی، دادههای جداول میباشند. فضای جدولی بسته به مدل خود میتوانند حاوی یک یا چند جدول باشند. دیتاستها از نوع LDS میباشند.
برای مشاهده مقاله ساختن Table space در ِDB2 اینجا کلیک کنید
فضاهای جدولی شامل انواع زیر هستند:
فضای جدولی ساده
فضای جدولی ساده میتواند، حاوی یک یا چند جدول باشد، لازم به ذکر است که رکوردهای جداول متفاوت به صورت درهم درون فضای جدولی نگهداری میشوند. فضای جدولی ساده، در نسخه هایDB2 9.1 به بعد قابل ایجاد شدن نیست.
در صورتیکه در سیستم قدیمی خود این مدل را داشته باشید، صرفا پشتیبانی خواهد شد.
نحوه نگهداری رکوردها در شکل زیر نشان داده شده است:
فضای جدولی سگمنتی
فضای جدولی سگمنتی نیز مانند ساده میتواند حاوی یک یا چند جدول باشد با این تفاوت که در فضای جدولی سگمنتی، فضای قابل دسترس به گروههای کوچکتری تقسیم میشود (که به این فضاها سگمنت گفته میشود. سگمنتها حاوی چند صفحه فیزیکی هستند).
رکوردهای هر جدول در سگمنتهای مربوط به خود ذخیره میشوند و هر سگمنت حاوی رکوردهای یک جدول خواهدبود. در صورتیکه بیش از یک جدول درون فضا تعریف شده باشد، رکوردهای جداول گوناگون کنار هم نیستند. در نتیجه سرعت خوانش داده بالاتر خواهدبود.
نحوه نگهداری رکوردها در شکل بالا نشان داده شده است.
فضای جدولی پارتیشنی
فضای جدولی به تعدادی واحد شکسته میشود که هر واحد یک پارتیشن نامیده میشود برای هر پارتیشن یک دیتاست جداگانه تعریف میگردد.
فضای جدولی پارتیشنی فقط حاوی یک جدول میتواند باشد. جدول تعریف شده بر روی فضای جدولی پارتیشنی باید حاوی یک ایندکس باشد که بر مبنای آن ایندکس، دادهها در پارتیشنهای متفاوت قرار میگیرند، این ایندکس موسوم به ایندکس پارتیشنی میباشد.
فضای جدولی جهانی (UTS)
فضای جدولی جهانی مدلی از فضاهای جدولی هستند که از تلفیق مشخصات فضای جدولی پارتیشنی سگمنتی بدست آمده اند، این فضای جدولی میتواند فقط حاوی یک جدول بوده و برای جداولی که رکوردهای با طول متغیر دارند، کارایی بهتری خواهدداشت.
فضای جدولی جهانی دو نوع متفاوت دارد که در ادامه به آن اشاره میشود.
پارتیشن به وسیله مقدار (PBR)
فضای جدولی PBR، مانند فضاهای جدولی پارتیشنیِ معمولی بر اساس مقدار داده (بر روی مقادیر یک ایندکس خاص) پارتیشن میشوند. برای مثال جدولی دارید که برای هر ماهِ سال، دادهها دسته بندی میشوند،
در نتیجه نیاز به فضای جدولی دارید که ۱۲ قسمت داشته باشد و هر قسمت، اطلاعات یک ماهِ خاص را درون خود جای دهد.
بدیهی است زمانی که این فضای جدولی تعریف میشود، ۱۲ دیتاست VSAM (به ازای هر پارت، یک دیتاست) بصورت مجزا تعریف خواهدشد.
پارتیشن به وسیله رشد (PBG)
در فضای جدولی PBG هیچ مقدار دادهای، برای تقسیم بندی پارتیشنی وجود ندارد. بلکه پارتیشنها یکی پس از دیگری ایجاد شده و شرط ایجاد پارتیشن جدید، پر شدنِ پارتیشن قدیمی است.
در تعریف این نوع از فضاهای جدولی یک مقدار مشخص برای حجم دیتاست پارتیشن، در نظر گرفته میشود (برای مثال ۴GB) و پس از پر شدن حجم دیتاست اول، دیتاست دوم به اندازه تعیین شده (طبق مثال ۴GB) ایجاد میشود. روند ایجاد دیتاستها به مقدار حداکثری، که خودمان تعریف میکنیم، بستگی دارد.
فضای جدولی اشیاء حجیم LOB
این مدل از فضای جدولی برای نگهداری دادههای گرافیکی، ویدئو، عکس و متون بسیار حجیم مورد استفاده قرار میگیرد.
فضای جدولی XML
این مدل از فضای جدولی برای نگهداری دادههای از نوع XML کاربرد دارد .
فضای ایندکسی (Index Space)
زمانی که یک ایندکس بر روی جدول ساخته میشود، یک ساختار فیزیکی برای نگهداری محتویات ایندکس بر روی گروه ذخیره ساز ساخته میشود. یک فضای ایندکسی همانند فضای جدولی دارای یک دیتاست از نوع VSAM است. و دارای نام و آدرس فیزیکی مشخص بر روی دیسک است.