22
גגגגגגגגג גגגגגג גגגגגגגגג גגגגגג( ( indexing & hashing indexing & hashing ) ) ךךךךךך ךךךךךך ךךךךךך ךךךךך, ךךךך ךךךךך ךךךךך ךךךךךך.)ךךךךךך ךךךךךך( ךךךך ךךךךךךך ךךךך ךךךךךך ךךךך:)ךךךך ךךךךך, ךךךךךך( : ךךךךך ךךךך גגגג גגגגגג ךךך ךךךך ךך ךךך ךךךךךך ךךךך ךךךךך גגגגגג ךךך ךךךךך ךךךךךך ךךךךך ךךךךךךך ךךך ךךךךך ךךךךךךך ךך ךךךךךךךך:( ךךךךךךךך ךךךךךךךordered indices )

אינדקסינג והשינג ( indexing & hashing )

  • Upload
    tamber

  • View
    61

  • Download
    9

Embed Size (px)

DESCRIPTION

אינדקסינג והשינג ( indexing & hashing ). אמצעים לאיתור רשומות בקובץ, למשל לצורך ביצוע שאילתא. קובץ האינדקס מכיל רשומות (כניסות אינדקס) בעלות מבנה: (מפתח חיפוש, פוינטר) כאשר: מפתח החיפוש הוא השדה על פיו מחפשים מידע בקובץ פוינטר הוא מצביע לרשומה בקובץ הנתונים שני סוגים עיקריים של אינדקסים: - PowerPoint PPT Presentation

Citation preview

Page 1: אינדקסינג והשינג ( indexing & hashing )

& indexing & indexingאינדקסינג והשינג )אינדקסינג והשינג )hashinghashing))

אמצעים לאיתור רשומות בקובץ, למשל לצורך ביצוע שאילתא.

קובץ האינדקס מכיל רשומות )כניסות אינדקס( בעלות מבנה: )מפתח חיפוש, פוינטר( כאשר:

הוא השדה על פיו מחפשים מידע בקובץמפתח החיפושהוא מצביע לרשומה בקובץ הנתוניםפוינטר

שני סוגים עיקריים של אינדקסים:(ordered indicesאינדקסים מסודרים )•(hash indicesאינדקסי הש )•

Page 2: אינדקסינג והשינג ( indexing & hashing )

(orderd indices) אינדקסים סדורים

שיטה לגישה מהירה: סדרתית ואקראית.כל אינדקס מאופיין על ידי מפתח חיפוש.

נניח כי כל הקבצים בבסיס הנתונים הם קבצים ממוינים.

אינדקס שמפתח (:primary indexאינדקס ראשי )•החיפוש שלו מגדיר את סדר הרשומות בקובץ.

כל אינדקס שאינו (:secondary indexאינדקס משני )•ראשי.

Page 3: אינדקסינג והשינג ( indexing & hashing )

Aviv 217 Avivi 750Hamerkaz 101 Morag 500Hamerkaz 110 Lerner 600Pinkas 215 Tamir 700Tsafon 102 Even 400Tsafon 201 Levy 900

קובץ סדרתי לרשומות היחסdeposit

מתאים הן לגישה סדרתית והן לגישה אקראית.

Page 4: אינדקסינג והשינג ( indexing & hashing )

(dense indexאינדקס צפוף )

Aviv Hamerkaz Pinkas Tsafon

Aviv 217 Avivi 750 Hamerkaz 101 Morag 500 Hamerkaz 110 Lerner 600 Pinkas 215 Tamir 700 Tsafon 102 Even 400 Tsafon 201 Levy 900

: אינדקס הכולל רשומת אינדקס אחת אינדקס צפוףלכל ערך של מפתח החיפוש.

Page 5: אינדקסינג והשינג ( indexing & hashing )

Aviv Pinkas

Aviv 217 Avivi 750Hamerkaz 101 Morag 500Hamerkaz 110 Lerner 600Pinkas 215 Tamir 700Tsafon 102 Even 400Tsafon 201 Levy 900

(sparse indexאינדקס דליל )

: אינדקס הכולל רשומת אינדקס רק אינדקס דליללחלק מהערכים של מפתח החיפוש.

Page 6: אינדקסינג והשינג ( indexing & hashing )

אינדקס דליל בעל שתי רמות

כאשר קבצי האינדקס גדלים יעילותם קטנה. במקרה זה ניתן לבצע אינדקס על קובץ האינדקס.

level 2 index(outer index)

level 1 index (inner index)

block 1

block 2

block 65

block 66

data file

Page 7: אינדקסינג והשינג ( indexing & hashing )

הקובץ אינו ממוין לפי מפתח החיפוש של האינדקס.

secondary index

buckets data file

block 1

block 2

Block 3

block 4

block 5

Block 6

Block 7

Secondary index with buckets

( secondary indexאינדקס משני )

Page 8: אינדקסינג והשינג ( indexing & hashing )

שיטות למימוש אינדקס משני

אינדקס משני צפוף המכיל כתובות לכל רשומות קובץ •כפילות של ערכי מפתח החיפוש באינדקס(.הנתונים. )

רשומת אינדקס אחת לכל ערך של מפתח חיפוש עם •פוינטרים אחדים לכל רשומה.

רשומת אינדקס אחת לכל ערך של מפתח חיפוש עם •( של פוינטרים לקובץ הנתונים..bucketהפנייה ל”דלי” )

Page 9: אינדקסינג והשינג ( indexing & hashing )

יעילותו של מבנה אינדקס סדרתי פוחתת עם גודל הקובץ. מבנה נתונים של עץ מאוזן שומר על יעילות גבוהה, במחיר

של תקורת זיכרון.

צומת אופיינית של העץ:

K1, K2,… Kn-1 הם ערכים של מפתח החיפושP1, P2,… Pn הםמצביעים.

(B+ tree indexעץ )

P1 K1 P2 K2 Pn-1 Kn-1 Pn

B+

Page 10: אינדקסינג והשינג ( indexing & hashing )

K1< K2<…< Kn-1 הערכים של מפתח החיפוש מסודרים בכל צומת כך ש

המצביעים של צמתי הביניים )לא העלים( מורים על תתי עצים כדלקמן: P1 Pj Kj PnPj+1

K <Kj K Kj

Page 11: אינדקסינג והשינג ( indexing & hashing )

בצמתי העלים מצביעים על רשומות בקובץ הנתונים P1,… Pn-1המצביעים

P1 Pj Kj Pn

רשומות המתאימות

K1 ל

K1

רשומות המתאימות

Kj ל

Pn-1 Kn-1

רשומות המתאימות

Kn-1 ל

Page 12: אינדקסינג והשינג ( indexing & hashing )

+Bכללים החלים על מבנה עץ

אם השורש אינו עלה, חייבים להיות לו לפחות שני בנים.• n/2 , לכל צומת )פרט לשורש ולעלים( בין n לעץ מסדר•

בנים. n לבנים.)רשומות n-1 ל (n-1)/2 , לכל עלה בין n לעץ מסדר•

בקובץ הנתונים(. 1מספר ערכי מפתח החיפוש בצומת שאינו עלה קטן ב •

ממספר המצביעים.על העץ להיות מאוזן.•העלים מקושרים זה לזה בסדר מפתח החיפוש.•

Page 13: אינדקסינג והשינג ( indexing & hashing )

Pinkas

Merkazi

Aviv Darom Eilat Merkazi Pinkas Tsafon

Eilat

.deposit לקובץ n=3 עץ עם

pointers to file records

+Bדוגמה למבנה עץ

Page 14: אינדקסינג והשינג ( indexing & hashing )

B+ tree insertions

• Find the leaf node where an entry belongs and insert it there.– Use the search algorithm to find the appropriate position.– If the entry fits in the node (it is not full) the process is finished.

• If the node is already full split it.– Half of the entries go in the old node and half in the new node.– With the creation of a new node an entry has to be inserted in the

penultimate level of the tree.• Adding an entry to this level may also result in a split if the node is full.

– A new node is created by splitting the old node.– One of the values is pushed up to the next level of the tree (removed from

the current level).– This, in turn may produce a new node.– This process is repeated until no new nodes are created or a new root node

has been created.

Page 15: אינדקסינג והשינג ( indexing & hashing )

B+ Tree Deletions

• Find the entry in the leaf node and delete it.

• This may result in too few entries (less than (n–1)/2) in which case either the predecessor or successor of the node is also affected (pick one) and one of two things occur.

– If the values from the two nodes fit in one node the nodes are coalesced.• Keep track of the value in the parent between the pointers to the two nodes.• Combine the two nodes into one.• If the node is a leaf node re-connect the links between leaves.• Delete (using this procedure) the value in the parent.

– If the values from the two nodes don’t fit in one node the values are rearranged.• Take one value and pointer from the other node.• This will create a new initial value in one node.

• Replace the appropriate parent value with this.• If, after recursive deletions, the root node has only one child, make this child

the new root and delete the old root.

Page 16: אינדקסינג והשינג ( indexing & hashing )

create [unique] index index-name on relation-name (attribute-list)

:כדוגמה create index br_indx on branch (branch-name)

drop index index-name

SQLהגדרת אינדקס ב

השמטת אינדקס:

Page 17: אינדקסינג והשינג ( indexing & hashing )

(hash indicesאינדקסי הש )

פונקצית השינג מחשבת כתובת של בלוק. שדה/שדות שעליהם פועלת (:hash fieldשדה/שדות ההש )

פונקצית ההשינג לחישוב הכתובת.

Page 18: אינדקסינג והשינג ( indexing & hashing )

Aviv 217 Avivi 750Darom 101 Morag 500Darom 110 Lerner 600Eilat 215 Tamir 700Merkazi 102 Even 400Merkazi 201 Levy 900Merkazi 218 Cohen 700Pinkas 222 Sahar 700Tsafon 305 Hazan 350

PinkasBucket 0

Bucket 1

Bucket 2

Bucket3

Bucket 4

DaromDaromDaromDarom

Eilat

MerkaziMerkaziMerkazi

Aviv

Tsafon h(x)= (…) mod 5

hash table for deposit . key= branch-name

דוגמת השינג

Page 19: אינדקסינג והשינג ( indexing & hashing )

( dynamic hashingהשינג דינמי )

השינג עם מספר קבוע של (:static hashingהשינג סטטי )דליים.

השינג שבו פונקצית (:dynamic hashingהשינג דינמי )ההשינג ומספר הדליים משתנים בהתאם לגודל קובץ

הנתונים.

Page 20: אינדקסינג והשינג ( indexing & hashing )

i

i1

i2

i3

hash prefix

bucket address table

bucket 1

bucket 2

bucket 3

extendabableהשינג בר-הרחבה )hashing)

Page 21: אינדקסינג והשינג ( indexing & hashing )

Aviv 217 Avivi 750Darom 101 Morag 500Eilat 215 Tamir 700Merkazi 102 Even 400Pinkas 222 Sahar 700Tsafon 305 Hazan 350Carmel 117 Moshe 295

Aviv 0010 1101 1111 1011 0010 1100 0011 0000Carmel 1101 0101 1101 1110 0100 0110 1001 0011Darom 1010 0011 1010 0000 1100 0110 1001 1111Eilat 1000 0111 1110 1101 1011 1111 0011 1010Merkazi 1111 0001 0010 0100 1001 0011 0110 1101Pinkas 1011 0101 1010 0110 1100 1001 1110 1011Tsafon 0101 1000 0011 1111 1001 1100 0000 0001

קובץ הרשומות שיוזנו לdeposit

32 bit hash function for branch-name

הוספת רשומות לקובץ דוגמה:depositתוך בניית השינג בר-הרחבה

Page 22: אינדקסינג והשינג ( indexing & hashing )

3

AvivTsafon

1

Eilat

3

DaromPinkas

3

bucket address table

מבנה סופי לאחר הזנת הרשומות לעיל

MerkaziCarmel

2

000001010011100101110111