introduction to oracle db data structure and data access (persian)

72
Introduction to Oracle Database Data Structure ی ئ ه ز م ح سان ح ا

Upload: ehsan-hamzei

Post on 08-Jan-2017

63 views

Category:

Engineering


10 download

TRANSCRIPT

Page 1: Introduction to oracle DB data structure and data access (persian)

Introduction to Oracle DatabaseData Structure

احسان حمزه ئی

Page 2: Introduction to oracle DB data structure and data access (persian)

ساختار داده منطقی در اوراکل!Oracle Schema:

شامل تمامی اشیا منطقی مربوط به کاربر می شود هنگام ایجاد کاربر جدید یک اسکیمایی جدید هم نام با نام

کاربری ایجاد می شود تمامی اشیاء منطقی ای که کاربر به عنوانowner در ،Eدارد

این شما هستند. در صورت داشتن دسترسی کاربر می تواند به اشیای منطقی

درون اسکیمای سایر کاربران دسترسی پیدا کند. امکانswitch کردن از اسکیمای کاربر به اسکیمای سایر

alterکاربران در صورت وجود دسترسی وجود دارد )دستور session set current schema)?=

،منظور از اشیا منطقی: جداول، پارتیشن ها، اندکس هاها و ...!viewها، Stored Procedureکالسترها،

اسکیما نقشی را همانندnamespace ایفا می کند! برخی از این اشیا حتی در یک اسکیما هم می توانند هم نام باشند!

Page 3: Introduction to oracle DB data structure and data access (persian)

انواع داده ای در اوراکل:انواع داده ای

:کاراکتریCharNcharVcharNvchar

عددیNumber)p,s(Integer

تاریخ و زمانDateTimestamp

( اشیا بزرگLOB)CLOBBLOBBFile

Page 4: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیTables

:جداولدائمیموقت

Transaction-SpecificSession-Specific

:جداولRelational Tables

Heap organizedIndex organizedExternal

Object Tables

Page 5: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیTables

یک جدول چیزی به جز سطر و ستون نیست! )سخنانبزرگان!(

:ستون هاعادیInvisible

ROWID >> Special Case >> Type: ROWID

Virtual

Page 6: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیTables

)دستورات: )نحوه ایجاد

Page 7: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیTables

)دستورات: )نحوه ایجاد -- ادامه

Page 8: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیTables

)دستورات: )نحوه ایجاد -- مثال

Page 9: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیTables

)ییراتEدستورات: )ایجاد تغ:اضافه کردن ستون

:تغییر نام ستون

:حذف ستون:تغییر مشخصات ستون

حذف تمام محتویات جدول: حذف اطالعات باTruncate استفاده شود(deleteبرگشت ناپذیر است!! )از دستور

Page 10: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیTables

)ییرات - ادامهEدستورات: )ایجاد تغ( نحوه تغییر سطحRW/RO:)

در سطحReadOnly:

Page 11: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیTables

)ییرات - ادامهEدستورات: )ایجاد تغ:حذف جدول

:تغیر نام جدولAlter Table tbl_name Rename To new_tbl_name

Page 12: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیTables

:ذخیره سازی Eهر جدول یکData Segment( بسته به نوع ذخیره سازیIndex Organized, Heap

Organized متفاوت است، اما در حالت کلی اوراکل ) هایی نگه داری می کند که در Row Pieceسطرها در قالب

Row یکRow Eحد امکان سEعی بر این اسEت که به ازای هر Piece.وجود داشته باشد

Null ،های انتهای سطرSkip.وندEمی ش :ازی برای بحث ذخیره سازیEامکان فشرده س

:فشرده سازی ساده جدول:فشرده سازی پیشرفته سطر:)فشرده سازی هیبریدی )سطری/ستونی

Page 13: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیTables

Temporary Tables:ر یک سایت اینترنتیEمثال: جدول مربوط به سبد خرید د

Page 14: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیTables

External Tables: رون یک فایل از قبل ذخیرهEه های این جداول ممکن است دEداد

شده باشند یا به هر نحوی خارج از پایگاه دEاده باشند؛ با تعریف Dataاین نوع جدول فراداده مربوط به آن ها در بخش

Dictionary ذخیره می شود، و به اوراکل امکان پردازش داده ها را می دهد.

Page 15: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیTables

External Tables)ادامه( :

Page 16: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیTables

:جداول Eت در موردEاطالعا Eکسب استفاده از دستورDesc[ribe]برای بررسی ساختار جدول :استفاده از جداول مدیریتی برای پیدا کردن و بررسی جداول

:Eجدول خاصDual

Page 17: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیConstraints

:نحوه تعریف محدودیت:در سطح ستوندر سطح جدول

:انواع محدودیتNOT NULL)ر سطح ستونEفقط د( UNIQUE)هردو روش( PRIMARY KEY)هر دو روش( FOREIGN KEY)هردو روش( CHECK)و روشEهرد(

Page 18: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیConstraints

ایجادConstraint بعد از ایجاد Table با استفاده از امکان پذیر است.AlTERدستور

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

!Eروی این ستون ها نمی سازد:تغییر محدودیت

:حذف ALTER TABLE table_name DROP CONSTRAINT

constraint_name; با حذف قیود مربوط به کلید اصلی یا یکتایی به صورت اتوماتیک اندکس

های مربوط به آن ها توسط اوراکل حذف می شود، مگر اینکه در انتهای استفاده شود.KEEP INDEXدستور از

Page 19: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیConstraints

:فعال و غیر فعال کردن:را انجام دهیم Eوجود نباشد و در هنگام ایجاد بخواهیم این تنظیماتEاگر م

ALTER TABLE table_name ADD CONSTRAINT constraint_name … {ENABLE, DISABLE} {VALIDATE, NOVALIDATE};

:وجود باشدEاگر م ALTER TABLE table_name {ENABLE, DISABLE}

{VALIDATE, NOVALIDATE} CONSTRAINT constraint_name; را Eوجود باشد و بخواهیم این ویژگیEاگر م( :Eبا تعویق EحدودیتEکنترل م

تغییر دهیم باید قید را حEذف کرده و مEجدد با ویژگی تعویقE جدید ایجاد کنیم(

ALTER TABLE table_name ADD CONSTRAINT constraints_name … DEFEREABLE {INITIALLY IMMEDIATE, INITIALLY DEFERRED}

Page 20: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیPartitions

مفهوم پارتیشن بندی؟...کلید پارتیشن بندی

:مزایا... افزایش کارائی، مدیریت آسان، کاهش زمان بازیابی و

در چه مواردی یک جدول را باید پارتیشن بندی کرد؟حجم باالی اطالعات جدولاطالعات بایگانی شده

Page 21: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیPartitions

:انواع روشهای پارتیشن بندیRangeListHashIntervalSystemReferenceVirtual Column-Based

:)پارتیشن بندی دو سطحی )ترکیبیR-R, R-L, R-H, L-R, L-L, L-H, I-R, I-L, I-H, H-H

Page 22: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیPartitions

پارتیشن بندی به روشRange: برای زمانی مناسب است که فیلدی وجود دارد که با

تعریف محدوده روی آن داده ها به شکل منطقی )از نظر بازیابی و ذخیره سازی(E تقسیم بندی می شوند.

( معموال فیلدهای زمانیDate برای استفاده به عنوان )کلید پارتیشن بندی مناسب هستند

Page 23: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیPartitions

پارتیشن بندی به روشList: از این روش پارتیشن بندی در حالتی که فیلدی وجود دارد

که دارای مقادیر محدودی است و امکان تقسیم بندی جدول را به شکل منطقی فراهم می آورد، استفاده می

شود.

Page 24: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیPartitions

پارتیشن بندی به روشHash: این روش برای حالتی مناسب است که از دو روش قبلی

یک تابع idنتوان استفاده کرد و بر اساسE یک کلید مانند Hash استفاده می شود که مقادیر موجود در این ستون

می کند.Mapرا به تعداد مشخصی خروجی

Page 25: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیPartitions

پارتیشن بندی به روشInterval: این روش یکextend روی روش Range است و برای

های Rangeحالتی است که با ورود داده های جدید جدیدی مطرح می شود در این حالت در صورتی که از

استفاده شده باشد با پیغام خطایی به Rangeروش شکل زیر روبه رو می شویم.

Page 26: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیPartitions

پارتیشن بندی به روشSystem: در این حالت این دستورselect و insert هستند که

مشخص می کنند داده در کدام پارتیشن ذخیره و یا مشخص نشود با insertبازیابی شوند! و اگر در دستور

خطا روبه رو می شود!

Page 27: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیPartitions

:)پارتیشن بندی به روش های ترکیبی )چند نمونهL-H:R-H:

Page 28: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیPartitions

L-R:

L-L

Page 29: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیPartitions

Page 30: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیPartitions

Page 31: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیPartitions

:فعالیت های رایج روی پارتیشن ها1افه کردن یک پارتیشن جدید به پارتیشن بندیEاض -Range2 افه کردن یک پارتیشن جدید به پارتیشن بندیEاض -Hash3 افه کردن یک پارتیشن جدید به پارتیشن بندیEاض -List4افه کردن یک پارتیشن جدید به پارتیشن بندی دو سطحیEاض -5 فشرده سازی پارتیشن -Hash6حذف پارتیشن -7ادغام پارتیشن -8تغییر مکان پارتیشن -9 عیتEبه دست آوردن اطالعات آماری از پارتیشن ها و وض -

هرکدام!

Page 32: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیPartitions

:اضافه کردن یک پارتیشن جدید ALTER TABLE <T-Name> ADD PARTITION <P-

Name> VALUES LESS THAN … TABLESPACE <TBS-Name>; )Range(

ALTER TABLE <T-Name> ADD PARTITION <P-NAME> TABLESPACE <TBS-NAME>; )Hash(

ALTER TABLE <T-Name> ADD PARTITION <P-NAME> VALUES )…( TABLESPACE <TBS-NAME>

Page 33: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیPartitions

:)اضافه کردن یک پارتیشن جدید )دوسطحی ALTER TABLE <T-Name> ADD PARTITION <P-

Name> VALUES LESS THAN … TABLESPACE <TBS-Name>; )Range(

ALTER TABLE <T-Name> ADD PARTITION <P-NAME> TABLESPACE <TBS-NAME>; )Hash(

ALTER TABLE <T-Name> ADD PARTITION <P-NAME> VALUES )…( TABLESPACE <TBS-NAME>

Page 34: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیPartitions

:حذف، فشرده سازی و ادغام پارتیشن ها حذف پارتیشن: در صورتی که پارتیشنی داده ای نداشته

باشد می توان به سادگی با دستور ALTER TABLE <T-NAME> DROP PARTITION <P-

NAME> [UPDATE GLOBAL INDEXES];

در دستور باال به جای عبارتPARTITION اگر از عبارت SUBPARTITION استفاده شود، به حذف زیر پارتیشن در

پارتیشن بندی دو سطحی می پردازد.

Page 35: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیPartitions

:جابه جایی پارتیشن

:بدست آوردن اطالعات آماری

Page 36: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndexes

ایندکس ها یک ساختار اختیاری هستند که بعضا استفاده ازآنها سرعت پاسخگویی را برای پرسش های یک جدول

افزایش می دهد.

ایندکس ها کامال به صورت مستقل از جدول هستند و خودبه عنوان یک شی مجزا فعالیت می کنند.

ایندکس ها برای جلوگیری ازFull-Scan ایجاد و مورد استفاده قرار می گیرند اما در صورتی که خروجی آن ها

مقادیر چندانی از جدول را فیلتر نکند نه تنها به بهبود کارایی کمک نمی کنند بلکه سرباری اضافه به حساب می آیند.

Page 37: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndexes

چه زمانی از ایندکس استفاده شود؟1 زمانی که کوئری های رایجی وجود دارند که بر حسب یک ستون به -

درصد ناچیزی از اطالعات جدEول منتج می شوند.2 ع به جدول دیگری می دهند به منظورEیی که ارجاEدر مورد ستون ها -

اسEتفاده از ایندکس ها منطقی اسEت.full table lockجلوگیری از 3 تورات دریافت اطالعات ازEزمانی که درون دس -ORDER BY, GROUP

BY, UNION, DISTINCT سازی Eتفاده می شود. )زیرا نیاز به مرتبEاس است و با استفاده از اندکس خود به خود مرتب سEازی انجام شدEه اسEت(

اوراکل معیاری برای استفاده یا عدم استفاده از ایندکس دارد، بهطوری که پیش بینی می کند استفاده از ایندکس به بهبود کارائی کمک می کند یا نه و در صورت نیاز از ایندکس استفاده می کند

)البته در کوئری میتوان به صورت صریح دستور استفاده از ایندکس Index Clustering Factorرا داد!( >>

Page 38: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndexes

نقش پر رنگ ،Eدر ساختار ایندکسROWID کامال احساس می شود به طوری که با دست آمدن محل داده در روی

می توان به محل ROWIDاندکس مربوطه با استفاده از ذخیره سازی داده های مربوط به سطر پی برد.

چه زمانی بهتر از ایندکس ها استفاده نشود؟ در مورد ستون هایی که دارای مقادیرNULL با تکرار زیاد

هستند. اده آن هاEستون هایی که نوع دDate)*( .است جداول کوچکجداولی که میزان و سرعت تغییرات آن باالست

Page 39: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndexes

:ها Eوضعیت ایندکسVisibilityUsability

:ها Eانواع ایندکسB* TreeBitmap

به صورت پیش فرض در فعالیت های انجام شده برای را در نظر می گیرد و در B*Treeاندکسها اوراکل نوع

ها استفاده کنیم باید به Bitmapصورتی که بخواهیم از صورت صریح این کار را انجام بدهیم.

Page 40: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndexes

B*Tree یک درخت متوازن است که بر اساس ستون :مربوطه ایجاد می شود.

پایین ترین سطح نودهای این درخت )برگ ها( اشاره گر(ROWIDهایی به سمت محل داده دارند )

مقادیرNULLذخیره نمی شوند Eدر اندکس های Eامکان استفاده از این اندکس هم برای پرسش

)برابری =( و هم برای پرسش های بازه ای )> <( قابل استفاده است.

:نحوه ایجاد CREATE INDEX <I-NAME> ON <T-

NAME>)C1[,C2,…]( TABLESPACE <TBS-NAME>

Page 41: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndexes

چه زمانی از ایندکسB*Treeاستفاده کنیم؟ قادیر متمایز ستون مورد نظرEزمانی که شرایط قبلی باشد + م

زیاد باشد انواع ایندکس هایB*Treeاز نظر نوع ایجاد

یکتا و غیر یکتاعادی و معکوسفشرده و معمولیمرکب و سادهمبتنی بر تابع)مرتب سازی شده )صعودی/نزولی

ایندکسها به طور پیشفرض به صورت غیریکتا، غیر فشرده ومرتب شده به صورت صعودی ایجاد می شوند!

Page 42: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndexes

Page 43: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndexes

ایندکسBitmap:زمانی که ستون مورد نظر دارای مقادیر محدودی ست زمانی که چندین ستون با مقادیر محدود بر حسب اپراتورهای

=… | …(where a=… & bمنطقی باهم ترکیب می شوند ).اردEزمانی که گروه بندی داده در پرسش وجود د

در این حالت به ازای هر مقدار مختلفی که در ستوناست یک آرایه بیتی ایجاد می شود. پس به ازای یک جدول

n مقدار متمایز دارد، n سطر که ستون مشخص آن mبا به 0 ایجاد می شود که 1 یا 0 تایی با مقادیر mآرایه

معنی این است که داده مورد نظر در سطر مشخص ...1نیست و

Page 44: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndexes

ایندکسBitmap: و کاربرد در کوئری هایی با Eاستفاده از این نوع ایندکس

شرط ترکیبی

Page 45: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndexes

ایندکسBitmap: و کاربرد در کوئری هایی با Eاستفاده از این نوع ایندکس

شرط ترکیبی

Page 46: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndexes

BITMAP JOIN INDEX: امکان تعریف یک ایندکس از روی دو جدول مختلف را فراهم

می آورد. ها 0.1به طوری که اندکس روی جدول اول اعمال می شود اما مبنای

جدول دوم است.

Page 47: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndexes

مقایسهBtree, Bitmap:

بخش نکات !!؟

Bitmap Btreeبرای ستون هایی با کاردینالیتی

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

باال

OLAPمناسب برای OLTPمناسب برای به روز رسانی مشکل به روز رسانی ساده

NULL )OK( NULL)!(

Page 48: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndexes

Partition Indexes به طور کلی این اندکس ها برای :جداولی که خود پارتیشن بندی شده اند استفاده می شود.

LOCAL و محلی GLOBALو به دو دسته ی عمومی تقسیم بندی می شوند.

ایندکس های معمولی: می توانند خود پارتیشن بندی شوندیا نشوند اما در این حالت به صورت مستقل و مجزا از

جدول مربوطه پارتیشن بندی می گردند و درصورتی که ( رخ دهد در حالت عادی نامعتبر DDLتغییری در جدول )

صراحتا اعالم DDLمی شوند مگر آنکه در انتهای دستور UPDATE GLOBAL INDEXESگردد :

Page 49: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndexes

GLOBAL INDEX: عناصر مربوط به یک پارتیشن ایندکس می توانند به یک یا

همه ی پارتیشن های جدول مربوط باشند. مناسب برای کاربردهایOLTP

سناریو هایی که چندین ستون به صورت مجزا مبنای دسترسیبه اطالعات هستند.

این نوع ایندکس ها فقط از نوعB*Tree!هستند حذف و اضافه کردن پارتیشن به صورت مستقل

Page 50: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndexes

GLOBAL INDEX:

Page 51: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndexes

Local INDEX: ه )برEده روی جدول مربوطEن بندی انجام شEدقیقا مطابق پارتیش

مبنای همان ستون، از همان اسEتراتژی پارتیشEن بندی و با همان شرایط!(

!دول و ایندکسEتناظر یک به یک هر پارتیشن ج Eاز هر دو نوعB*Tree, Bitmap.ندEمی توانند باش ب برای کاربردهایEمناسOLAP:مزایا

Availabilityباالتر مدیریت ساده تر

:ه ایجادEنحو CREATE INDEX <I-Name> ON <T-Name>)<C-Name>(

LOCAL;

Page 52: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndexes

Local INDEX::محدودیت ها

اضافه کردن پارتیشن؟حذف یک پارتیشن؟

Page 53: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndexes

Local INDEX:Prefixed:

در تعریف ایندکسLocal!مربوطه و در بخش تعریف ستون ها اولین ستون کلید پارتیشن بندی است Non-Prefixed:

در تعریف ایندکسLocal مربوطه و در بخش تعریف ستون ها اولین ستون کلید پارتیشن بندی نیست و حتی می تواند کال در لیست وجود نداشته باشد.

:سناریو( 2 پارتیشن در 2جدول TBS کلید ستون( )a غیر فعال کردن )TBS!دوم کلید 2 اندکس به 2ایجاد( روش a,b کلید( E+ )b,a) کوئری بر مبنایa,b >> plan تفاده ازEتوسط اوراکل اس prefixed انتخاب ایندکس با(

CBO) کوئری بر مبنایb خطا توسط << local-prefixed انتخاب ایندکس با( CBO)

شود! )کال یا در زمان انتخاب( اما در Eن منتج نمیEف پارتیشEبه حذ Eاوقات Eگاهی.Eشرایط عادی هر دو نوع به یک شکل رفتار می کنند

Eاندکس Eدر واقع این ماهیت کوئری هاست که تعیین می کند یکlocal به کدام شکل باشد! )با توجه به کوئری ها ی مختلف و فرکانسE تکرار آنها در طراحی باید

در این باره تصEمیم گیری شود!(

Page 54: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndexes

مقایسهLocal , Global indexes:

Page 55: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndexes

Partial Partition Index:!!امکان فعال کردن اندکس در سطح پارتیشن

Page 56: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndex Organized Table

( اختار ایندکس درختیEاین نوع جداول داده های خود را در سB*Tree )نگه داری می کنند!

سرعت باالی بازیابی اطالعات از مزایای این جداول است البته باید حتمامحدودیت های این جداول و معایبE استفاده از آن نیز مد نظر قرار گیرد.

ب نیست؟Eچه زمان مناس دسترسی بر اساسPK.نباشد !لی باالستEعملیات درج زیاد است یا تغییرات کلید اص

:محدودیت ها کلیدPK بر خالف جداول heapکه اختیاری است در اینجا اجباری است ستون های از جنسLONG.نمی تواند داشته باشد ورتEنمی تواند به صCLUSTER)استفاده شود )ذخیره و بازیابی شود

الزم به ذکر است امکان پارتیشن بندی این جداول به سه روشH,R,L وجود دارد ولی باید کلید پارتیشن بندی زیر مجموعه ای از کلید اصلی

جدول باشد!

Page 57: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndex Organized Table

( می توان برای این جداول بخشSegment مجزایی برای )( در نظر گرفت. در این overflowذخیره داده های سرریز )

حالت همانند اندکس نیاز به ذخیره ی اشاره گری به بالک مورد نظر در بخش سرریز است. ترتیب ستون ها بسیار

مهم است در این حالت، چون تا جایی که می شود در همان بخش ذخیره می شوند و مابقی به بخش سرریز می روند.

:پارامترهای ایجاد جدول مبتنی بر اندکس1 -OVERFLOW TABLESPACE <TBS-NAME<2 -PCTTHRESHOLD <TH<3 -INCLUDING <C-NAME<

Page 58: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیIndex Organized Table

مثالی از تعریفIOT:

Page 59: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیClusters

ورتEذخیره سازی )فیزیکی( و بازیابی دو یا چند جدول به صکنار هم را کالستر جداول می نامند.

این شی به منظور بهبود کارایی پایگاه داده درJOIN های سنگین پر تکرار ایجاد شده است. به طوری که با نگه داری

می شوند می تواند به بهبود JOINداده های جداولی که با هم هستند که IOسرعEت بازیابی کمک کند. )زیرا تعداد فرآیند های

چالش برانگیزند و با این تکنیک این فرآیندها کاهش می یابند( البته استفاده از این تکنیک سبب کاهش کارایی در فرآیند

INSERTION.خواهد بود چه زمانی ازCLUSTERING:استفاده نکنیم

1 راتEول به کرEداEزمانی که ج -UPDATE.می شوند 2 نی که نیاز بهEزما -FULL-SCAN.ستEجدول عملی رایج ا

Page 60: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیClusters

INDEX CLUSTER:از ایندکس برای دسترسی

به داده استفاده می کند و مطابق شکل بر مبنای همین

مقادیر ایندکس داده های جداول مختلف را کنار هم

ذخیره و بازیابی می کند.

Page 61: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیClusters

INDEX CLUSTER::نحوه ی تعریف کالستر بر مبنای ایندکسگام اول: تعریف کالستر

گام دوم: تعریف ایندکس

گام سوم: اضافه کردن جداول

Page 62: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیClusters

HASH CLUSTER: این روش همان مفهومINDEX CLUSTER را دنبال می کند

استفاده می INDEX به جای HASHبا این تفاوت که از تابع کند.

اگر تعداد خروجی های تابعHASH متناسب با تعداد عناصر می توان به داده IOمتمایز کلید کالستر باشد با یک فرآیند

های مورد نظر دسترسی پیدا کرد؛ زیرا در هنگام ذخیره مشخص کننده محل ذخیره HASHسازی هم خروجی تابع

سازی بوده، پس در هنگام بازیابی هم می توان خروجی آن را به صورت مستقیم مورد استفاده قرار داد.

نحوه تعریف: گام دوم در روش قبل حذف می شود، گامسوم دقیقا مثل روش قبل و گام اول به شکل رو به رو:

Page 63: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیClusters

Page 64: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیClusters

Attribute-Clustering: یک جدولheap است که قاعده ذخیره سازی آن توسط کاربر تعیین می

( ستون 10شود! این قواعد در واقع روی محتوای درون یک یا چند )حداکثر هستند که می توانند در جداول مختلفی قرار بگیرند، عمل می کنند.

:قواعد ذخیره سازیLinear OrderInterleaved Order

انواعAttribute-Clustering: ان جدول در حافظه یEتون همEعادی: عناصر یک جدول بر مبنای یک یا چند س

فیزیکی ذخیره می شوند به نحوی که هر جا مقادیر این ستون ها به هم نزدیک باشد، در حافظه فیزیکی هم مکان آن ها به نزدیک باشد.

Join در این حالت عناصر یک جدول بر مبنای یک یا چند ستون جدوال دیگر در :حافظه ی فیزیکی ذخیره می شEوند، به نحوی که ...

Page 65: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیClusters

Attribute-Clustering:

Page 66: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیClusters

Page 67: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیClusters

Attribute-Clustering::نحوه ایجاد

Page 68: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیClusters

Attribute-Clustering::نحوه ایجاد

Page 69: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیViews

ویو یا دید یک جدول منطقی است که بر اساس جداول یاویوهای موجود می باشد.

ویو هیچ داده ای درون خود ذخیره نمی کند بلکه از جداولتغذیه می شود.

:مزایای ویو.پیچیدگی های داده های اصلی را مخفی می کند امنیت جداول را با جلوگیری از دسترسی مستقیم کاربران

فراهم می آورد. برنامه های کاربردی را از تغییرات در جداول پایه مستقل می

کند.

Page 70: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیViews

:ایجاد ویو

Page 71: Introduction to oracle DB data structure and data access (persian)

معرفی اشیا منطقیViews

دستوراتDML بر View:هاCheck Option!

امکان ایجادView با محدودیت Read-Only )With Read Only Constraint(

به منظور مدیریت و کسب اطالعات در مورد ویوها می ,DBA_VIEWSتوان از جداول زیر استفاده کرد:

ALL_VIEWS, USER_VIEWS

Page 72: Introduction to oracle DB data structure and data access (persian)

با تشکر- اتمام بخش اول