35
Лекц 10-11 Хайлтыг оновчтой зохион байгуулах Агуулга 1.ӨС-гийн оролцогч 2.Гадаад загвар 3.Хайлтыг оновчтой зохион байгуулах үйлдлийн өртгийг тооцоолох үйлдлийн дараалал хайлтын мод 1

Pp Lect10 11

Embed Size (px)

Citation preview

Page 1: Pp Lect10 11

Лекц 10-11Хайлтыг оновчтой зохион байгуулах

Агуулга

1.ӨС-гийн оролцогч

2.Гадаад загвар

3.Хайлтыг оновчтой зохион байгуулах үйлдлийн өртгийг тооцоолох үйлдлийн дараалал хайлтын мод

1

Page 2: Pp Lect10 11

1. ӨСС -ийн оролцогчӨСС -ийн оролцогч нар, тэдгээрийн үүрэг Томоохон системийг байгуулж хэрэгжүүлэх үед тус тусын үүрэг, хариуцлага, эрх мэдэлтэй оролцогч нар (програмчлалын баг дахь албан тушаалтан) ажилладаг Системийн загварчлагч - судалгаа, загварчилгаа ӨС-ийн зохион байгуулагч (ӨСЗБгч)

ӨС-ийн загвар, ӨС дахь өгөгдлийн нууцлалт, хамгаалалт Хэрэглэгчийн хүссэн тайлан нэгтгэлийг гаргаж болох эсэхийг ӨЕС-тэй

тулгаж шалгадаг Хэрэв боломжтой бол гадаад загварыг гаргаж системийн шинжээчид

өгдөг Системийн шинжээч хэрэглэгчийн шаардлагыг судлаж техникийн

даалгаврыг гаргаж програмчид өгдөг Хэрэглээний програмч нь кодлох, тестлэх, гарын авлага бичих,

нэвтрүүлэхийг хариуцаж гүйцэтгэдэг

2

Page 3: Pp Lect10 11

2. Гадаад загвар

Гадаад загвараар тодорхой тайлан нэгтгэлд уншигдах ӨЕС-ийн хэсгийг ялгаж харуулдаг

ӨС-аас олон тайлан нэгтгэл гардаг учраас ӨЕС-ээс хэдэн ч гадаад загвар гарч болдог

Гадаад загварыг өгөгдлийн дэд схем гэж мөн нэрлэдэг

3

Page 4: Pp Lect10 11

Гадаад загварт дараах зүйлийг тусгасан байна тайланд уншигдах объектүүдийг ялгаж түүхтайланд уншигдах атрибутуудыг ялгаж түүх

гаргах атрибут боловсруулах явцад хүснэгтүүдийг хооронд нь холбох

атрибутууд тодорхой атрибутын утгаар бичлэг шүүх нөхцөлд орох

атрибутууд эрэмбэлэлт, бүлэглэлт хийх атрибутууд бодолтын томъёонд орох атрибутууд

4

2. Гадаад загвар

Page 5: Pp Lect10 11

3. Хайлтыг оновчтой зохион байгуулах

Хайлтыг оночтой зохион байгуулах (query optimization)ӨС-аас гарах тайлан, нэгтгэл нь зөвхөн зөв үр дүнтэй

байхаас гадна аль болохоор бага хугацаанд боловсруулагдах шаардлагатай уялдаж гарсан нэг талаас, их мэдээлэл агуулсан, том хэмжээний ӨС дахь

боловсруулалт цаг хугацаа ихээхэн шаарддаг нөгөө талаас ӨС-ийн хэрэглэгч мэдээллийг түргэн гаргаж авахыг

хүсдэг

Хугацааг багасгах нэг арга нь боловсруулах үед аль болох цөөн бичлэг унших арга замыг олох юм

5

Page 6: Pp Lect10 11

3. Хайлтыг оновчтой зохион байгуулах

Үйлдлийн өртгийг тооцоолох Аливаа боловсруулалтыг янз бүрийн алгоритмаар гүйцэтгэж болох

ба тэдгээрээс аль оновчтойгий нь сонгодог ӨС-аас аль болох бага өртөгтэйгээр мэдээлэл гаргаж авах нь чухал Боловсруулалтын өртгийг өгөгдөл боловсруулахад зарцуулах

машин цагаар/хугацаагаар голчлон тооцоолдог Харин хугацаа нь ямарваа үйлдэл хийх үед уншигдах бичлэгийн

тооноос шууд хамааралтай байдаг Иймээс үйлдлийн өртгийг хэмжих нэгжийг бичлэгийн тоогоор

илэрхийлж болно

6

өртөг хугацаа бичлэгийн тоо

Page 7: Pp Lect10 11

3. Хайлтыг оновчтой зохион байгуулахҮйлдлийн өртгийг тооцоолох

ӨС-г боловсруулах эрэмбэлэх мөр сонгох, багана сонгох бүлэглэх холбох

гэх зэрэг үйлдлүүд дээр өртгийг хэрхэн тодорхойлохыг үзье

7

Page 8: Pp Lect10 11

3. Хайлтыг оновчтой зохион байгуулах Үйлдлийн өртгийг тооцоолох

Мөр сонгох үйлдлийн өртөг Мөр сонгох үйлдлийн хугацаа боловсруулж буй

мөрийн тооноос хамаарна N мөртэй хүснэгтийн мөр бүрийг хамгийн цөөндөө нэг

удаа шалгаж, заасан нөхцлийн дагуу харьцуулалт хийж бичлэгүүдийг сонгодог

Иймээс мөр сонгох үйлдлийн зардал N-тэй тэнцүү байдаг

8

Page 9: Pp Lect10 11

3. Хайлтыг оновчтой зохион байгуулах Үйлдлийн өртгийг тооцоолох

Мөр сонгох үйлдлийн өртөг Хүснэгт нь мөр сонгогдох атрибутын утгаар эрэмбэтэй

байхад (хоёрдогч эрэмбэ) хоёртын хайлт явагддаг Энэ тохиолдолд мөр сонгох үйлдлийн зардлыг

log2 N томъёогоор тодорхойлдог

Жишээлбэл

бичлэгийн тоо: N өртөг: log2N

1,024 10Хүснэгт эрэмбэлэгдсэн байхад мөр сонгох үйлдлийн

өртөг мэдэгдэхүйц багасдаг

9

Page 10: Pp Lect10 11

3. Хайлтыг оновчтой зохион байгуулах Үйлдлийн өртгийг тооцоолох

Багана сонгох үйлдлийн өртөг Сонгох багана дахь ижил бичлэгүүдийг давхцуулахгүй

гаргах ба өртөг нь log2N (Select дэх Distinct заалтуур)багана дахь утга бүрийг шалгаж мөр сонгох үйлдлийг хийнэ

Дараа нь баганы бүх утгуудыг дараалсан аргаар гүйлгэн уншдаг ба үүний өртөг нь N юм

Иймээс багана сонгох үйлдлийн өртгийг N*(1+log2N) томъёогоор боддог

Жишээ нь: бичлэгийн тоо: N өртөг: N * (1 + log2N) 1,024 11,264

Багана сонгох үйлдэл нь мөр сонгох үйлдлээс өндөр өртөгтэй байна

10

Page 11: Pp Lect10 11

3. Хайлтыг оновчтой зохион байгуулах Үйлдлийн өртгийг тооцоолох

Эрэмбэлэх үйлдлийн өртөг Эрэмбэлэх үйлдэлд харьцуулах ба дараалуулж унших

үйлдлүүд багтдаг Иймээс N мөрийг эрэмбэлэх өртгийг N*log2N томъёогоор

олдог

11

Page 12: Pp Lect10 11

3. Хайлтыг оновчтой зохион байгуулах Үйлдлийн өртгийг тооцоолох

Холбох үйлдлийн өртөг N бичлэгтэй хүснэгтийг М бичлэгтэй хүснэгттэй холбоход эхлээд

тэдгээрийг гадаад түлхүүрийн утгаар эрэмбэлэх ажиллагаа явагддаг өртөг нь N*log2N , M*log2 M

Дараа нь хүснэгтүүдийг гадаад түлхүүрийн дагуу нэгтгэх ба нэгтгэх нь шугаман үйлдэл

өртөг нь N, MИймээс нийт өртөг нь N*(1+log2N) + M*(1+ log2M)

Жишээ нь: Бичлэгийн тоо:N,M өртөг:N,M холболт

1,024 1,024 22,528Холбох үйлдэл нь хамгийн өндөр өртөгтэй үйлдэл учраас холболтын

өмнө хүснэгтүүдийг аль болохоор багасгах зорилгоор мөр, багана сонгох үйлдлийг хийх шаардлагатай

12

Page 13: Pp Lect10 11

3. Хайлтыг оновчтой зохион байгуулах

Үйлдлүүдийн дараалал Боловсруулалтыг илүү оновчтой болгох үүднээс

хоорондоо уялдаатай, тодорхой дараалалтай хэсгүүдээс тогтсон нийлмэл илэрхийлэл бичдэг

Нийлмэл илэрхийлэлд үйлдлүүдийн дарааллыг заахдаа хаалтуудыг хэрэглэнэ Үйлдлүүд нь дотоод хаалтнаас эхлэж биелэгдэнэ

Дараах хүснэгтэнд заасан дарааллыг хайлтыг оновчтой зохион байгуулахын тулд баримтлавал зохино

13

Page 14: Pp Lect10 11

14

Үйлдэл Өртөг Үйлдлйиг

гүйцэтгэх дараалал эрэмбэтэй эрэмбэгүй

Эрэмбэлэх - N*log2N 1

Мөр сонгох

log2N N 2

Бүлэглэх  

2

Багана сонгох

N*(1+log2N) N*N эсвэлN2 3

Холбох N* (1+ log2N) + M*(1+ log2M)  N2+M2 4

Page 15: Pp Lect10 11

3. Хайлтыг оновчтой зохион байгуулах Үйлдлүүдийн дараалал

Харьцаа алгебрийн нийлмэл илэрхийлэл бичих зарчим нь дараахи математик хууль дээр тулгуурладаг

Энгийн холболт хийх үед холбогдох харьцаануудын байрыг солиход үр дүн өөрчлөгдөхгүй

А х В = B x A

(А х В) x C = A x (B x C)Тайлбар: А,В,С нь харьцааны нэр

15

Page 16: Pp Lect10 11

3. Хайлтыг оновчтой зохион байгуулах Үйлдлүүдийн дараалал

Харьцаануудыг холбосны дараа тодорхой нэг нөхцлөөр бичлэг сонгох нь харьцаа бүрээс тус нөхцлөөр бичлэгүүдийг эхлэж сонгон холболт хийхтэй ижил үр дүнтэй байна

(A x B) = A x BХарьцаануудыг холбосны дараа багана сонгох нь харьцаа

тус бүрээс багана сонгож холбосны дараа дахин багана сонголт хийсний үр дүнтэй ижил байна

(A x B) = ((A) x (B))

16

Page 17: Pp Lect10 11

3. Хайлтыг оновчтой зохион байгуулах Хайлтын мод

Оюутны код Оюутны нэр Мэрг.код Мэрг. код Мэргэжил

17

1.Оюутан (1000 бичлэгтэй) 2.Мэргэжил (14 бичлэгтэй)

ӨС-г боловсруулах үйлдлүүд ба тэдгээрийг биелүүлэх дарааллыг хайлтын модоор дүрслэдэг Жишээ нь:Програм хангамжийн тэнхимд сурч буй оюутнуудыг код, нэр, мэргэжлээр гаргах

•Зорилго: 1000 орчим бичлэгтэй оюутан, 14 бичлэгтэй мэргэжил харьцаануудыг бага хэмжээтэй болгосны дараа холболт хийнэ •Үүний тулд: Харьцаануудын хэмжээг мөр, баганаар сонголт хийж багасгана

Page 18: Pp Lect10 11

18

Үйлдэл Өртөг бодох

томъёо Өр-төг

Үр дүнд гарах (бичлэг*

талбар)ын тоо

1. Тус харьцааг мэргэжлийн кодоор эрэмбэтэй гэж үзье (анхдагч түлхүүр учраас)

- - 14*2

2. Компьютерийн ухааны хоёр мэргэжлийг сонгох

Log214 4 2 * 2

3. Багана сонголт хийгдэхгүй

- - -

1. Мэргэжил харьцааг багасгах

Page 19: Pp Lect10 11

19

4. Тус харьцааг анхдагч түлхүүр оюутны кодоороо эрэмбэтэй байгаа гэж үзъе

- - 1000 * 3

5. ПХ тэнхимд сурч буй оюутнуудыг сонгох

log2 1000 10 447 * 3

Оюутан харьцааг багасгах

Үйлдэл Өртөг бодох

томъёо Өр-төг

Үр дүнд гарах (бичлэг*

талбар)ын тоо

Page 20: Pp Lect10 11

20

6. 5-р алхмын үр дүнг 2-той энгийнээр холбох

447*(1+log2 447)+ 2*(1+log2 2)=

4382+44386 447 * 5

7. 6-р алхмын үр дүнгээс оюутны код, нэр, мэргэжил талбарыг сонгох

3*(447*(1+log2 447))= 3*4382

13147 447 *3

   17547

 

Үйлдэл Өртөг бодох томъёо

Өр-төг

Үр дүнд гарах (бичлэг* талбар)ын тоо

Мэргэжил ба оюутан харьцааг холбох

Нийт өртөг

Page 21: Pp Lect10 11

21

Page 22: Pp Lect10 11

3. Хайлтыг оновчтой зохион байгуулах Хайлтын мод

Тус хайлтын харьцаа алгебрийн илэрхийлэл

оюут.код, оюут.нэр, мэрг.нэр

( * ( мэрг.код=”484105” or мэрг.код=”484106”

( МЭРГЭЖИЛ))

x мэрг.код= мэрг.код

* ( left (оюут.код, 2) =”SW” (ОЮУТАН)))

22

Page 23: Pp Lect10 11

3. Хайлтыг оновчтой зохион байгуулах Хайлтын мод

Тус хайлтын Select команд

Select St_Id, St_name, Pr_name From

(Select * From Professions Pr Where Pr_Id =”484105” or Pr_Id = “484106”)

Inner Join

(Select * From Students St Where Left(St_Id,2)=”SW”)

On Pr. Pr_Id= St. Pr_Id)

23

Page 24: Pp Lect10 11

3. Хайлтыг оновчтой зохион байгуулах Хайлтын мод

Тус хайлтыг стандарт маягаар гүйцэтгэвэл

Харьцаа алгебрийн илэрхийлэл

оюут.код, оюут.нэр, мэрг.нэр

( мэрг.код=”484105” or мэрг.код=”484106”

( МЭРГЭЖИЛ x мэрг.код= мэрг.код ОЮУТАН))

Select команд

Select St_Id, St_name, Pr_name

From Professions Pr Inner Join Students St

On Pr. Pr_Id= St. Pr_Id

Where Pr_Id =”484105” or Pr_Id = ”484106”  

24

Page 25: Pp Lect10 11

25

Тус хайлтын стандарт хайлтын мод

Тус модны өртөг: 24190 ба оновчилсон модны өртөг: 17547

Page 26: Pp Lect10 11

26

Тэнхим: Програм хангамж

Мэргэжлийн код

Мэргэжлийн нэр

Оюутны тоо

D484105 Мэдээллийн систем

177

D484106 Програм хангамж

300

  Тэнхмийн нийт:

477

Жишээ 2 Програм хангамжийн тэнхимд сурч буй оюутнуудын тоог мэргэжил, тэнхмээр нэгтгэх

Page 27: Pp Lect10 11

27

Page 28: Pp Lect10 11

3. Хайлтыг оновчтой зохион байгуулах Хайлтын мод

Харьцаа алгебрийн илэрхийлэл

тэнх.код, тэнх.нэр, мэрг.код, мэрг. нэр, оюут.тоо

( тэнх.код, мэрг.код, мэрг. нэр, оюут.тоо

( тэнх.код, мэрг.код, оюут.тоо

( мэрг.кодоюут.тоо: Count(оюут.код( тэнх.код =”SW”

(тэнх.код: left(оюут.код,2), оюут.код, мэрг.код

(ОЮУТАН))))

x мэрг.код= мэрг.код

(*( мэрг.код =”484105” or мэрг.код=”484106” (МЭРГЭЖИЛ))) )

x тэнх.код= тэнх.код (* ( тэнх.код =”SW” (ТЭНХИМ))28

Page 29: Pp Lect10 11

3. Хайлтыг оновчтой зохион байгуулах Хайлтын мод

Select команд Select Dep_Id, Dep_name, Pr_Id, Pr_name, NumberofSt From

(Select Dep_Id, Pr_Id, Pr_name, NumberofSt From (Select Dep_Id, Pr_Id, Count(St_Id) as NumberofSt From (Select Left (St_Id,2) as Dep_Id, St_Id, Pr_Id From Students St) Where Dep_Id=”SW” Order by Pr_Id Group by Pr_Id)

Inner Join (Select * From Professions Pr Where Pr_Id=”484105” or Pr_Id=”484106”)

On Pr. Pr_Id= St. Pr_Id) Inner Join (Select * From Department D Where Dep_Id=”SW”) On Dep_Id= D. Dep_Id

29

Page 30: Pp Lect10 11

Математик үйлдэл хэрэглэж өгөгдөл боловсруулах

Өгөгдлийн харьцаа нь бичлэгүүдийн олонлог юм Иймээс хоёр ижил бvтэцтэй хvснэгт дээр дараах vйлдлvvд

хийж болно нэгтгэх огтолцлыг олохялгаатай хэсгийг олох

30

Page 31: Pp Lect10 11

Математик үйлдэл хэрэглэж өгөгдөл боловсруулах

Нэгтгэх

Тус үйлдлийн үр дүнд хоёр харьцааны нэгдмэл нэг харьцаа үүсэх ба түүнд ижил хэсгүүд давхардаж орохгүй

Харьцаа алгебрт тэмдэглэгээ, СКюЛ хэлэнд UNION гэсэн үг хэрэглэж тус үйлдлийг тодорхойлно

Тус үйлдэл дараахи дүрмийг баримталдаг: Харьцаа1Харьцаа2 = Харьцаа2Харьцаа1 (Харьцаа1Харьцаа2)Харьцаа3 = Харьцаа1(Харьцаа2Харьцаа3)

31

Харьцаа 1 Харьцаа 2

Page 32: Pp Lect10 11

Математик үйлдэл хэрэглэж өгөгдөл боловсруулах

Огтолцлыг олох

Тус үйлдлийн үр дүнд хоёр харьцааны ижил хэсэг сонгогдож үр дүнгийн харьцаанд давхардахгүй орно

Харьцаа алгебрт тэмдэглэгээ, СКюЛ хэлэнд INTERSECTION гэсэн үг хэрэглэж үйлдлийг тодорхойлно

Тус үйлдэл дараахи дүрмийг баримталдаг: Харьцаа1Харьцаа2 = Харьцаа2Харьцаа1 (Харьцаа1Харьцаа2) Харьцаа3 =Харьцаа1 (Харьцаа2Харьцаа3)

32

Харьцаа 1

Харьцаа 2

Page 33: Pp Lect10 11

Математик үйлдэл хэрэглэж өгөгдөл боловсруулах

Ялгаврыг олох

|

Тус үйлдлийн үр дүнд 1 дэх харьцаанаас 2 дахь харьцаа хасагдаж гарна

Харьцаа алгебрт хасах (-) тэмдэглэгээ СКюЛ хэлэнд Difference гэсэн үг хэрэглэж тус үйлдлийг

тодорхойлно Харьцаа1-Харьцаа2 # Харьцаа2-Харьцаа1

33

Харьцаа 2Харьцаа 1

Page 34: Pp Lect10 11

Математик үйлдэл хэрэглэж өгөгдөл боловсруулах

Харьцаа алгерийн илэрхийлэл: Үр дүн1 багшийн код, албан тушаал (БАГШ ]X албан туш. код = албан

туш. код АЛБАН ТУШААЛ) Багш тушаалтай багшийн код ( албан тушаал = “*багш” (ҮР ДҮН1)) Үр дүн2 багшийн код, мэргэжил (БАГШ ]X мэргэж. код = мэргэж. код

МЭРГЭЖиЛ) Багш мэргэжилтэй багшийн код ( мэргэжил = “*багш” (ҮР ДҮН2)) Үр дүн Багш тушаалтай Багш мэргэжилтэй

СКюЛ команд:Select T. T_ID

From Teacher T, Occupation O Where T. Occ_ID=O.Occ_ID and O. Occ_name = “%багш”

UNION Select T. T_ID

From Teacher T, Profession P Where T. Prof_ID=P. Prof_ID and P. Prof_name =“*багш”

34

Багшийн ажлыг хийж чадах, өөрөөр хэлбэл мэргэжил, албан тушаалын аль нэг нь, эсвэл хоёулаа “багш” байх албан хаагчдыг ялгаж гаргая гэвэл нэгтгэх үйлдэл хийнэ

Page 35: Pp Lect10 11

Математик үйлдэл хэрэглэж өгөгдөл боловсруулах

Мэргэжлийн багш нарыг, өөрөөр хэлбэл эзэмшсэн мэргэжил ба албан тушаал нь зэрэг “багш” байх багш нарыг ялгаж гаргая гэвэл ижил хэсгийг ялгах үйлдэл хийнэ

Харьцаа алгерийн илэрхийлэл: Жишээ 1-ийн Багш тушаалтай ба Багш мэргэжилтэй харьцаанууд

дараахи үйлдлээр нэгтгэгдэнэ. Үр дүн Багш тушаалтай Багш мэргэжилтэй Select T. T_ID

From Teacher T, Occupation O

Where T. Occ_ID=O.Occ_ID and O. Occ_name = “*багш”

INTERSECTION

Select T. T_ID

From Teacher T, Profession P

Where T. Prof_ID=P. Prof_ID and P. Prof_name =“*багш”

35