۱۳۸۹ شهریور ۲۵, پنجشنبه

ساختار منطقي اوراكل

ساختار منطقي اوراكل از دو عنصر تشكيل شده است Tablespace و Schema :
 Tablespace
بانك اطلاعاتي اوراكل به صورت منطقي به يك يا چند قسمت تقسيم شده است كه به آن قسمت‌ها Tablespaceمي‌گويند. در حقيقت Tablespace گروه‌بندي منطقي اطلاعاتي است كه به هم ارتباط دارند. Tablespace  معمولاً تحت نظر مدير پايگاه داده يا DBAها قرار دارند و به او اجازه مي‌دهند كارهاي زير را انجام دهد:
- براي افزايش كارايي بانك اطلاعاتي، منابع داده را به دستگاه‌هاي مختلف اختصاص دهد.
 –ميزان فضاي ديسك را در پايگاه داده كنترل نمايد.
 - براي هر كاربر ميزان مشخصي فضا در نظر بگيرد.
 - عمليات كپي پشتيبان و به‌روزآوري اطلاعات را به صورت جزيي انجام دهد.
هر پايگاه داده حداقل داراي يك Tablespace به نام  SYSTEM و يك Tablespace به نام SYSAUX است كه به صورت خودكار در موقع توليد پايگاه جديد توليد مي‌گردد. اگرچه مي‌توانيم در SYSTEM Tablespace و SYSAUX پايگاه كوچك ديگري قرار دهيم، توصيه مي‌شود براي هر كاربر بانك اطلاعاتي يك Tablespace جديد توليد گردد.
اوراكل ازاين دو Tablespace براي ذخيره اطلاعاتي مانند Data Dictionary استفاده مي كند كه در خود اطلاعات MetaData را انبار مي‌كند. اين اطلاعات شامل داده‌هايي همچون سطوح دسترسي و اطلاعات كليدهاي اصلي جداول است.
هر Tablespace دراوراكل شامل يك يا چند DataFile است كه اطلاعات را در خود ذخيره مي‌كنند. اين DataFileها خود شامل DataBlock ،Extentها و Segmentها مي‌شوند.
Data Block ها كه بعضي مواقع به آن‌ها Page ،Oracle block  و logical block نيز مي‌گويند، مكاني هستند كه اطلاعات اوراكل مستقيماً در آن ذخيره مي‌شود و اوراكل از فضاي خالي اين Data Blockها استفاده مي‌كند
Extentsها مجموعه‌اي از DataBlockها هستند كه براي ذخيره نوع خاصي از اطلاعات به كار گرفته مي‌شوند. بعد Extentها در رده بالاتراز  Segmentها قرار دارند كه مجموعه‌اي از extentها هستند كه در يك Tablespace مشخص ذخيره مي‌گردند.
مثلاً تمامي اطلاعات جدول در data segment خود ذخيره مي‌شود و ايندكس‌هاي هر داده در index segment خاص خود ذخيره مي‌شوند. پايگاه داده اوراكل مي‌تواند علاوه بر دو Segment ذكر شده، از Segmentهاي Rollback كه اطلاعات Rollback را ذخيره مي‌كند و Segment به نام Temporary كه براي دستورات SQL مانند مرتب‌سازي به كار گرفته مي‌شوند نيز استفاده كند.
Schema :
Schema در واقع مجموعه اي از اشيا با ساختار منطقي مي باشد كه اجازه ي ديدن اطلاعات پايگاه داده را به ما مي دهد .
تمامي اشياي منطقي از قبيل:
Tables
Cluster
Indexes
Views
Stored procedures
Triggers
Sequences
جدول ها ( tables ) :
جدول ها, واحد اساسي از نگه داري داده در يك پايگاه داده اوراكل هستند. داده در رديف ها و ستون ها ذخيره مي شود.  جدول با يك نام ( مانند employee ) ومجموعه اي از ستون ها تعريف مي شود. به هر ستون يك نام ( مانند employee_id, last_name, job_id ) , يك نوع داده ( مانند Number,char,nvarchar ) و يك عرض مي دهيد . عرض مي تواند به وسيله ي يك نوع داده مثل DATE , از قبل تعيين گردد . چنانچه ستون ها از نوع Nmber باشد به جاي عرض , دقت ( precision ) و مقياس ( Scale ) تعريف مي شوند . رديف مجموعه اي از اطلاعات يك ستون مطابق با يك ركورد منفرد مي باشد .
 شما مي توانيد براي ستون هاي يك جدول , قوانيني مشخص نماييد . اين قوانين , محدوديت هاي يكپارچگي ناميده مي شوند . يك مثال از اين محدوديت ها را مي توان Null نبودن برشمرد . اين محدوديت , ستون را مجبور مي سازد كه براي هر رديف حتما مقداري را داشته باشد .پس از اينكه جدولي را ايجاد نموديد , رديف هايي از جدول را با استفاده از جملات SQL وارد مي كنيد.
شكل زير مثالي از يك جدول به نام emp مي باشد :

 
   
چگونه جدول داده ها ذخيره مي شود ؟
زمانيكه يك جدول ايجاد مي كنيد , اوراكل بخشي از داده را بصورت اتوماتيك به يك tablespace به منظور نگه داري داده هاي بعدي جدول تخصيص مي دهد .تخصيص و استفاده از فضا براي بخشي از داده هاي جدول به روشهاي زير كنترل مي شود :
•    مي توانيد بخشي از فضاي اختصاص داده شده به سگمنت داده را بوسيله ي ست كردن پارامتر ذخيره سازي براي سگمنت داده كنترل نمايد .
•    مي توانيد استفاده از فضاي آزاد در بلوك داده , كه سگمنت داده را تشكيل مي دهد را با استفاده از پارامترهاي PCTFREE و  PCTUSED كنترل كنيد .
اوراكل به جاي اينكه داده را در بخش داده در يك Tablespace ذخيره نمايد , در يك جدول كلاستر شده در بخش داده ايجاد شده براي كلاستر , ذخيره مي نمايد . نگهداري پارامترها , نمي تواند زمان ايجاد كردن يا تغيير دادن يك جدول كلاستر شده را مشخص نمايد . نگه داري پارامترها , كنترل كردن و ذخيره سازي همه جدول ها را در يك كلاستر ايجاد مي كند .

جدول هاي تقسيم شده ( partitional Table  ) :
جدولهاي تقسيم شده به داده هاي شما اين اجازه را مي دهند كه به قطعات كوچكتري به نام پارتيشن شكسته شوند .ايندكس ها نيز به همين منوال مي توانند تقسيم بندي شوند. هر پارتيشن مي تواند به طور اختصاصي مديريت شود, و مستقل از ساير پارتيشن ها عمل نمايد , بنابراين فراهم آوري چنين ساختاري مي تواند به دستيابي و كارايي بهتر كمك كند .

جدول هاي تودرتو :
شما مي توانيد يك جدول با ستوني كه نوع داده اش از نوع جدولي ديگر است ايجاد كنيد . اين بدين معناست كه جدولها مي توانند در داخل جدولهاي ديگر به عنوان مقدار يك ستون قرار بگيرند , يعني همان جدولهاي تودر تو. سرور اوراكل داده هاي جدول تودرتو را خارج از سطرهايي از جدول اصلي ذخيره مي كند و از مدل ذخيره سازي كه ستونهايي را براي ذخيره ي جدول تودرتو در نظر مي گيرد استفاده مي كند .
رديف جدول والد, شامل يك مجموعه ي واحد از جدول شناسه اي است , كه به يك نمونه از جدول داخلي اشاره مي كند .

جدول هاي موقت :
به منظور جدول هاي پايدار و دائمي , اوراكل مي تواند جدول هاي موقتي را براي نگه داري داده هايي كه در طول يك تراكنش يا نشست بوجود مي آيد ايجاد نمايد .
عبارت CREATE GLOBAL TEMPORARY TABLE يك جدول موقت كه مي تواند مخصوص تراكنش يا نشست باشد را ايجاد مي نمايد . جدول هاي موقتي كه مخصوص تراكنش هستند , داده هايي را كه در طول تراكنش مورد استفاده قرار مي گيرند را نگه داري مي كنند و جدول هاي موقتي كه مخصوص نشست هستند , داده هايي كه در طول نشست مورد استفاده قرار مي گيرد را نگه داري مي كند . در يك چنين جدولي براي هر نشست داده ي اختصاصي وجود دارد و هر نشست مي تواند داده ي مخصوص به خودش را ببيند و استفاده كند .قفل هاي DML بر روي داده جدول هاي موقت تعيين نمي شود و عبارت LOCK بر روي يك جدول موقت اثري ندارد , چرا كه هر نشست داده ي مخصوص به خودش را دارد . شما مي توانيد شاخص هايي را روي جدول موقت براساس با استفاده از عبارت CREATE INDEX , ايجاد كنيد . توجه كنيد كه ايندكسهاي ايجاد شده بر روي چنين جدول هايي , موقت مي باشد و داده ي ايندكس شده , همان حوزه تراكنشي يا نشست را دارد كه داده در جدول موقت دارد .
شما مي توانيد ديدگاههايي را بر روي هر دو جدول موقت و دائمي ايجاد كنيد. همچنين مي توانيد تريگرهايي را بر روي جدول موقت ايجاد كنيد .

تراكنش هاي فرزند و والد :
جدول هاي موقت مخصوص تراكنش به وسيله ي تراكنش هاي كاربر و تراكنش هاي فرزندانشان قابل دسترسي هستند .اگرچه جدول موقت مخصوص تراكنش نمي تواند بوسيله ي دو تراكنش موجود در يك نشست مورد استفاده قرار گيرد اما بوسيله ي تراكنش هاي موجود در نشست هاي مختلف مي تواند استفاده شود .
توجه داشته باشيد كه اگر تراكنش كاربر يك INSERT در داخل جدول موقت داشته باشد پس از آن هيچ تراكنش فرزندي نمي تواند از جدول موقت استفاده كند .
اگر تراكنش فرزند يك INSERT در جدول موقت انجام دهد سپس در پايان تراكنش فرزند , داده ي انتساب داده شده به جدول موقت از بين مي رود . پس از آن هر تراكنش فرزند يا هر تراكنش والد ديگري , مي تواند به جدول موقت دسترسي داشته باشد .

هیچ نظری موجود نیست:

ارسال یک نظر