Top Banner
מאת אורן שמיר, 2005 גרסא1.1 סיכום קורס מסדי נתונים* לגרסא האחרונה גש/ י לאתר: orenshamir.kicks-ass.net ** חלק מהזכויות שמורות. מבוסס על חומר מהרצאות שהועברו בסימסטר א,' 2005
41

סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

Feb 18, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

2005, מאת אורן שמיר1.1גרסא

סיכום קורסמסדי נתונים

orenshamir.kicks-ass.net: י לאתר/לגרסא האחרונה גש* מבוסס על חומר מהרצאות שהועברו. חלק מהזכויות שמורות**

2005', בסימסטר א

Page 2: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

נושאים מרכזיים

מבוא1.

ERDתרשימי 2.

אלגברת יחסים3.

Oracle- פעולות בסיסיות ב4.

תיאוריית תכנון סכמות – מושגי בסיס5.

תיאוריית תכנון סכמות – הערכת בעיות ופתרונות בסכמות6.

ניהול טרנזקציות – תיאוריה7.

ניהול טרנזקציות – מעשית8.

.9Data Mining

התאוששות מנפילה10.

שאלות חזרה11.

Page 3: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

מבוא

Database management systems, by Raghu Ramakrishnanספר קורס – •

•DBMS – Database management system – אוסף כלי תוכנה לניהול ועיבוד נתונים

.ים-DBג מספר "ע

:רמות הפשטה•

.כוללת אינדקסים וקבצים, סכמה פיסית – מתארת כיצד הנתונים יושבים על הדיסק1.

.B-treeהסכמה יושבת בקובץ , למשל

DB- ב. סכמה לוגית – מתארת את הסמנטיקה של המידע והיחסים בין פריטי מידע2.

ביחד עם סוגי, הסכמה הלוגית של יחס היא אוסף האטריביוטים של היחס, יחסי

.constraints- שם היחס ו, האטריביוטים

.3views – מאפשרים מידור של גישה למידע בין קבוצות משתמשים

המודל היחסי

המידע שנשמרסוגהם מגדירים את ; כ" של טבלא נשארים קבועים בדאטריביוטים•

בטבלא

כלל. tuplesנקראים גם . ומשתנות לעיתים קרובות, מכילות את המידע עצמורשומות•

הרשומות בטבלא ייקראו היחס

ER -entity-relationship - מודל ה

מרצים, ישויות – סטודנטים•

מפתחפ אוסף תכונות שלה – אוסף זה ייקרא "כל ישות ניתנת לזיהוי יחיד ע1.

כל הישויות מאותו סוג ' הוא קבהיחס2.

כל הישויות מאותו סוג נמצאות באותה קבוצה3.

"לומד אצל- “קשרים •

כל הקשרים מאותו סוג נמצאים באותה קבוצה1.

ISAקשר מיוחד – •

Page 4: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

מבטא ירושה1.

במודל היחסי אין ירושה ולכן צריך למצוא דרך נאותה למימוש סוג קשר זה2.

Page 5: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

תרשימים

סוגי ישויות המיוצגות בתרשימים

י ריבוע"מיוצגים ע – entity setsקבוצות של ישויות – •

האטריביוטים אשר' קב. י עיגול"ישויות יחידה – מיוצגים ע' א שייך לקב"אטריביוטים – כ•

י קו תחתון"מהווה את המפתח מצויינת ע

יחסים•

המחובר בקווים לישויות המשתתפות בו, י יהלום"מצויינים ע1.

נכתוב על קו הקשר את סוג, פעמים באותו קשר' אם אותו סט ישויות משתתף מס2.

הקשר שמתקיים לכל מופע של הישות

קבוצות של ישויות nיחס מחבר בין -nיחס לא חייב להיות בינארי – 3.

( at most ) אילוצי מפתח

אלו מפרטים האם מותר לישות להשתתף ביחס אחד או יותר•

יכולה להשתתף בכל מספר של יחסים( סוג ישות)ישות , ללא אילוץ•

לכל היותר ביחס אחדלישות מותר להשתתף , אם יש אילוץ מפתח•

י חץ מהישות לכיוון היחס"מסומן ע•

( at least ) אילוצי השתתפות

הישויות חייבת להשתתף לפחות ביחס אחד' קובעים האם כל ישות בקב•

חייבת להשתתף ביחס' כל ישות בקב, אם יש אילוץ השתתפות•

הישויות' י קו עבה בין היחס לקב"מסומן ע•

Weak entity sets

פ"פ השתתפותה ביחס וע"אלא גם ע, פ האטריביוטים שלה בלבד"ישות אינה מאופיינת ע•

ישות אחרת המשתתפת ביחס

(קו עבה)חייב להיות לה אילוץ השתתפות עבור היחס המזהה שלה •

Page 6: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

(חץ)עם הישות המזהה שלה key constraintחייב להיות לה •

י קו"והמפתחות מזוהים ע, כן קו עבה-מסביב ליחס המזהה יש גם, ריבוע עבה: י"מסומנת ע•

מקווקו

ISA היררכיות

.המורישה למעלה, הישות היורשת למטה”; ISA"י משולש שבתוכו כתוב "מסומן ע•

•Overlap constraint – יהוC,B יורשים מ -A .האם ייתכן ש -B הוא גםC ? אם כן,

.B overlaps C: יש לכתוב

•Cover constraint – האם כל ישות אב היא מסוג אחד הבנים(abstract ?)אם כן,

.B and C cover A: לכתוב

נקבה וכדי להכריח חתונות בין גברים\אנשים למינים זכר, למשל, ניתן להשתמש כדי לסווג•

.לנשים בלבד

יחסי הכלה

ניתן להכיל ישויות בתוך ישויות•

י ריבוע מסביב לכל הישויות המוכלות"מסומן ע•

לטבלאות ERD תרגום

על המפתח primary keyתרגום ישויות פשוטות – לטבלא משלהן עם •

foreignקשרים – מתרגמים לטבלא המכילה את המפתחות של המשתתפים בקשר בתור •

keys ,ל הוא ה"צירוף המפתחות הנ -primary key וכן מכיל, של טבלאת הקשר

(אם יש)אטריביוטים של הקשר עצמו

-עושים את ה, אם אחת הישויות המשתתפות בקשר יכולה להשתתף רק בקשר אחד1.

primary key שלה ל -primary key במקום ליצור טבלא, או לחליפין. של הקשר

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

ניתן בדומה להשתמש בטבלא של, participation constraintsוגם keyאם יש גם 2.

.relationship 1:1כך יווצר . not nullולהוסיף , הישות

foreign key- הן כ" שולטת"של הישות ה key- מוסיפים את ה, weak entityבתרגום •

Page 7: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

.primary key- והן כחלק מה

:ISAתרגום •

חובה. האב-לטבלאת foreign keyבן מחזיקה -וכל טבלאת, אב-ניתן לעשות טבלאת1.

overlapאו שיש , את טבלאת האב (cover)לא מכסות אם טבלאות הבנים

. אב-בנים בלי לבנות טבלאת-אזי ניתן ליצור טבלאות cover, no overlapאם יש 2.

.לישויות המוכלות foreign keysהכלה מתרגמים בעזרת •

Page 8: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

אלגברת יחסים

המודל היחסי

.כל עמודה היא אטריביוט, י טבלאות"יחסים ממומשים ע•

המידע נשמר כרשומות בטבלא•

.אין חשיבות לסדר העמודות מכיוון שלכל עמודה יש שם•

סכמההאטריביוטים של היחס נקראת ה' קב•

אין שני אלמנטים, כלומר; הוא קבוצה( כולל את המידע ברשומות)באלגברת יחסים היחס •

זהים בו

תוצאת כל. בעזרתם ניתן לחשב שאילתות, – אוסף פעולות על יחסיםאלגברת יחסים•

.פעולה היא יחס

:הפעולות•

.i(.מוחקת חלק מהעמודות) – בחירה להתייחס רק לחלק מהאטריביוטים ביחס הטלה

att1: י"מסומנת ע , att2R - מחזיר יחס המכיל מתוך כל רשומה ב -R ,רק את

.ל"שתי העמודות הנ

.iiי"מסומנת ע. – בחירה להחזיר רק חלק מהרשומותבחירה :att1=' something ' R-

.somethingרשום att1- בהן ב Rמחזיר רק את הרשומות של

∧י "לשימושינו שירשור תנאים ע ושימוש באופרטורים, ∨,

, ,≥ ,≤ ,= .פריטים טקסטואליים כותבים במרכאות יחידות. ≠,

.iiiמחברת כל רשומה של יחס אחד עם כל רשומה של יחס שנימכפלה קרטזית – .

ומספר, מספר האטריביוטים בתוצאה הוא סכום אטריביוטי הטבלאות המקוריות

A: י"מסומן ע. הרשומות הוא מכפלת מספר הרשומות המקוריות זה בזה X B.

.iv – חילוקA%B – חילוק שלA ב -B , מתבצע אם יש עמודות משותפות ביןA ו-

B . האופרציה מחזירה את העמודות שלA שאינן ב -B ,ושעבורן מתקיים כי עמודה

.B- עם כל קומבינציה אפשרית של ערכים מ A- זו מופיעה ב

.vצירופים:

.אך כאן משולבים בחירה והטלה, – דומה למכפלה קרטזיתצירוף טבעי•

Page 9: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

בוחר רק את הרשומות בהן הערכים, הצירוף הטבעי מבצע מכפלה קרטזית

מוריד את העמודות הכפולות, באטריביוטים המשותפים של שני היחסים זהים

.ומחזיר את התוצאה

:פ התנאי"ועליה בחירה של רשומות ע, – מבצע מכפלה קרטזיתצירוף מותנה•

R∢R.AS.B∧... S.

פ שוויון בעמודות"בוחר רשומות ע, – מבצע מכפלה קרטזיתצירוף שוויוני•

.ומכל שוויון מבצע הטלה על אחד האטריביוטים בלבד, שהוגדרו בפעולה

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

.vi( –איחוד קבוצות) – מצרף שני יחסים בעלי אותם אטריביוטים ליחס יחיד איחוד

מסומן כמו איחוד בין קבוצות

.viiההפרש, עבור שני יחסים בעלי אותה קבוצת אטריביוטים, – בדומה לאיחודהפרש

מסומן. B- ולא ב Aהוא ההפרש בין קבוצות – התוצאה – הרשומות שקיימות ביחס

- '-'.ב

.viiiאילו הרשומות, עבור שני יחסים בעלי אותה קבוצת אטריביוטים- חיתוך

המשותפות לשני היחסים– מסומן כמו חיתוך בין קבוצות

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

:במקרה זה נסמן. יש שתי עמודות עם אותו שם אחרי ביצוע מכפלה קרטזית, למשל

$1A - הטלה על האטריביוט הראשון שלA.

Page 10: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

Oracle - פעולות ב

SQL

פעולות אדמיניסטרטיביות

sqlplus login/password@instanceName: התחברות•

sqlplus login/password@instanceName @file: י"ע SQLהרצה של קובץ •

בסיסיים ( datatypes ) סוגי נתונים

•char)n – ) מכילn תווים

•varchar2)n – )עד , באורך משתנהn תווים

•number – יש גם . תווים 40עדnumber)n ) אוnumber)n,m ) המכילים עדn ספרות,

אחרי הנקודה mמתוכן

פעולות על טבלאות

: יצירה•

Create table tableName )

attName dataType [colConstraint1 colConstraint2...],

attName dataType [colConstraint...],

[TableConstraint con1...]

(;

:constraintsסוגי

.1not null – אז חייבים להכניס ערך לטור, כותבים פשוט כך

defaultערכי ברירת מחדל – 2. ' f ' - מכניסf אם לא נאמר אחרת

.3unique – ניתן. לא מרשה שיהיו שתי רשומות להן ערך זהה בטור זה, על טור

unique, להוסיף גם ברמת טבלא fname , lname - הצירוף של שתי העמודות

.ע"חח

.4Primary key – ניתן לציון לעמודה או לטבלא עם ציון שם העמודה , בדומה\

Page 11: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

.not null, unique: בפרט משמעותו. אחד לטבלא primary keyיש רק . עמודות

.5Foreign key – ברמת טבלא – נכתב כ:

foreign key colNamereferences Department id .כל ערך חוץ מ: משמעו-

null שבעמודתcolName חייב להיות קיים בעמודהDepartment.id.

.לא תוכל להימחק כל עוד יש עובדים בה Department.idהעמודה , במקרה זה

בשביל למחוק את כל העובדים אוטומטית כאשר נמחקת העמודה :שים לב

Department.id יש להוסיף בסוף הגדרת ה -foreign key את :on delete

cascade.

,למשל. ניתן להכניס רק ערכים שעברו בדיקה: בדיקת ערכים6.

check Gender=' f ' orGender=' m ' .ברמת האטריביוט יכול להתייחס רק

.ברמת הטבלא יכול להתייחס למספר אטריביוטים, לאטריביוט המסויים

:להוספת מפתח זר, למשל. alter table: י הפקודה"מתבצע ע: שינוי טבלא•

alter table tableName )

add) foreign key )emp( references Employees)id( (

(;

:הורדת עמודות. בדומה ניתן להוסיף עמודות לטבלא

alter table tablename drop column col1

.addבמקום modify- י שימוש ב"ניתן לשנות סוג עמודה ע

desc tablename: שאילתות לגבי טבלא•

drop table tname cascadeאו , drop table tnameי "ע: מחיקת טבלאות •

constraints – פקודה זו מוחקת גםforeign keys המצביעים לטבלא זו.

פעולות על רשומות בטבלאות

:הכנסת רשומה•

insert into tname values )10,20)

delete from tname where cond: מחיקה•

;update table tname set field1=val1,field2=val2 where cond: שינוי•

Page 12: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

שאילתות

select from X where Y group by Z having U order by W

:כללי•

לא להחזיר פעמיים אותה רשומה, משמע – distinctניתן לכתוב selectאחרי 1.

בוחרים למעשה מהמכפלה הקרטזית שלהן, אם בוחרים מכמה טבלאות2.

or- ו andשרשור בין תנאים בעזרת 3.

-כ לגשת ל"ואח.. from sailors s, sailors r: .. ניתן לתת שמות לטבלאות4.

s.name

select name as tempName: ניתן לתת שם חדש לעמודה שנשלפה5.

:whereלגבי •

IS NULL, IS NOT NULL: כך NULLניתן לבדוק אם 1.

IN, NOT IN: ניתן לבדוק אם נמצא ברשימה2.

:order byלגבי •

order by col1 ASC, col2 DESC: ממיין לפי טור או טורים1.

(כל אלו מורידים כפולים אוטומטית)הפועלים על שתי שאילתות , אופרטורים נוספים•

.1QueryMINUSQuery -ההפרש

.2QueryUNION Query -האיחוד

.3QueryINTERSECT Query -החיתוך של שתי שאילתות

:Group byלגבי •

שווה group by- בכל קבוצה הקריטריון שהשווה ב, המידע מחולק לקבוצות1.

נשארות רק הקבוצות שעומדות בקריטריון, havingאם יש 2.

מקבלים תשובה יחידה לכל קבוצה3.

:שאילתות פנימיות•

בדומה'. וכו where sid in )select sid: ניתן לכתוב שאילתות פנימיות where- ב1.

EXISTSניתן להשתמש באופרטור האונרי IN- ל

'וכו where sid > ALL )select sid: למשל: ANY, ALL- ניתן להשתמש ב2.

בשאילתה הפנימית ניתן להשתמש במשתנים מהשאילתה החיצונית3.

:ניתן להשתמש בשאילתה פנימית כבטבלא4.

Page 13: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

select M.mxage

from )select max)S2.age( as mxage from Sailors S2( M

:אופרטורים מוכללים•

.לא מחושבים NULLערכי . count distince A: ניתן להוסיף להם

.1count

.2sum)A)

.3Max A

.4Min A

.5Avg)A)

•NOT IN – שאילתה-תנאי בו ערך מסויים לא מופיע ברשימת ערכים או בתשובה לתת

•NOT EXIST – השאילתה לא מחזירה ערכים-תנאי המתקיים רק אם תת

VIEWS

•view – היא לא קיימת ממש. זוהי שאילתה שניתן לגשת אליה כאילו היא טבלא לכל דבר

.אלא מחושבת מחדש בכל גישה, כטבלא

create or replace view viewName as )query: ליצירה•

לצורכי מידור views- פעמים רבות משתמשים ב•

ניתן לשנות ולהוסיף רשומות כל עוד אין מניעה, מתייחס לטבלא יחידה view- אם ה•

'(וכו NULL values, group by, הרשאות)

•Materialized View – מחדש בכל גישה-כדרך לחסוך חישוב, ממומשת כטבלא ממש.

DB- פ פרמטרים שנקבעים ב"ע, היא צריכה לעבור סינכרון מדי פעם

NULL ערכי

התשובה לא( נחשב בעל תוצאה וודאית null and false)וודאיות -בכל האופרציות הלא•

ידועה

'וכד count, avgלא מחושבים לצרכי •

הפלוס גורם – where sid=s.sid)+(, etc, למשל: null- ניתן בתנאי להוסיף התחשבות ב•

NULL- לא שווה ל NULLאחרת , לתשובה NULLלכך שיתווספו גם ערכי

Page 14: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

PL/SQL ו - Triggers

•procedural sql – מאפשר כתיבת בלוקים של קוד המבצעים פעולותsql

:כל בלוק של קוד הוא מהצורה הבאה•

Declare )oracle-type var declaration part, optional(

Begin )statement part(

Exception )exception handling, optional(

End;

/

,ים חדשים-typeניתן ליצור , בנוסף. DB- של ה types- ניתן ליצור משתנים מסוגי ה•

ניתן גם. type myRec is record: ניתן ליצור. כמו מבנה – recordלמשל מסוג

.sailorRec sailors%ROWTYPE, למשל: typeלהשתמש בסוג של טבלא בתור

•Cursor – למשל. משתמשים בו בכדי לעבור על תוצאת שאילתה ,cursor s is select *

from sailors .י "ערך ע-מוציאים ממנו ערךfetch s into sRecord

:אשר מהווים פונקציה לה ניתן לקרוא PL/SQLניתן לכתוב בלוקים של •

create procedure fun1

)person IN boats.person%TYPE, num OUT NUMBER(

IS

Begin ...

End; /

:exceptions- טיפול ב•

.i מגדירים אובייקט מסוגException בחלק ההגדרות

.iiי "אפשר לזרוק אותו עraise excVar

.iiiבחלק ה -Exceptions עושים :when excVar then ...)actions(... end

Triggers

אלו פרוצדורות המתבצעות בצורה. triggersהוא PL/SQL- דבר נוסף שניתן לכתוב ב•

Page 15: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

.DB- אוטומטית כאשר משהו קורה ב

:צורת הביצוע•

.1row-level triggers – נמחקה\נוספה\מתבצעים פעם לכל רשומה שהשתנתה

.2statement level triggers – מתבצעים פעם יחידה עבור פעולתSQL יחידה

.before, after, instead ofיכול להיות : זמן הביצוע•

:צורת ההגדרה•

CREATE TRIGGER triggerName

BEFORE/AFTER/INSTEAD OF

DELETE/INSERT/UPDATE [of attributeName, attributeName...]

[or DELETE/INSERT/UPDATE [of...] ]

on tableName

[FOR EACH ROW] [WHEN condition]

PL/SQL BLOCK

אם זה, אם יש)ניתן לגשת למקורית , כאשר רוצים לגשת לטבלאות, sql- בבלוק ה•

AFTER )י"ע ::old.attName ,י "ולחדשה ע: new.attName .בתנאי בהגדרת ה-

trigger ניגשים ללא ה.':' -

alter trigger trig1 enable/disable: ניתן להפעיל ולכבות טריגרים•

JDBC

•java DB Connectivity

:ששת שלבי ההתחברות•

driver- טעינת ה1.

DB- של פרטי ההתחברות ל url- המקבל את ה connectionפתיחת 2.

(האחרון מקבל את השאילתה ביצירה )preparedStatementאו statementיצירת 3.

/ executeQueryבעזרת – statement- שליחת שאילתה בעזרת ה4.

executeUpdate

מעבר על תוצאות5.

connection- סגירת ה6.

Page 16: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

ResultSetתוצאות שאילתה מוחזרות באובייקט מסוג •

מכיל נתונים של טבלא1.

אחד ResultSetבזמן מסויים יכול להיות רק statementלכל 2.

נקרא )first, last, previousוכיום גם , nextי "ע rs- עוברים על הרשומות ב3.

scrollable resultsets)

getStringי "קוראים מידע ע4. columnNameבעזרת '. וכוwasNull על ה -rs

.nullניתן לדעת אם קיבלנו

המכיל את מבנה הטבלא resultSetMetaDataאובייקט מסוג rs- ניתן לקבל מה5.

•preparedStatement י "כ למלא אותם ע"ואח, ים באמצע'?'-מאפשר להשאירsetString

כאשר מקבלים. מסביבו' ' והאם צריך , ייתרון – יודעים את הטיפוס שמכניסים. setIntאו

input מהמשתמש עדיף להשתמש ב -preparedStatement .עובד רק עבור, ? אבל

.עבור טבלאות, למשל, ולא, ערכים

jdbc - טרנזקציות ב

אוטומטית commitכל פעולה מבצעת , autocommit mode- ב•

או conn.commitואז צריך לעשות conn.setAutoCommit)falseאפשר לעשות •

conn.rollback כאשר מסיימים.

Page 17: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

תיאוריית תכנון סכמות – מושגי בסיס

תלות פונקציונלית

אזי נאמר כי קיימת ביחס התלות הפונקציונלית. A,Bבעל אטריביוטים , Rיהי היחס •

AB אם בכל רשומה בה ערכיA גם ערכי , זהיםB אפשרי גם שמספר עמודות. זהים

.ABC: יקבעו עמודה אחת

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

.יש לשנות את הסכמה, פ אלו יוצרות שכפול מידע בסכמה"אם ת

t- ב t- של הרשומה ה Aנסמן את ההטלה לאטריביוטים • [A].

: מתקיים, t,rאם לכל שתי רשומות ABפ "יחס מקיים ת, כלומר•

t [A]=r [A]⇒ t [B ]=r [B ]

.פ הן חלק מהסכמה – אילוצים על האטריביוטים"ת•

A⊇Bטריוויאלית אם ABנאמר כי : פ טריוויאליות"ת•

מקיים בהכרח גם F אם כל יחס המקיים את ABפ " את התגוררתפ "של ת Fקבוצה •

Aאת B

פ " גזירת ת

.פ מסויימת"גוררת ת Fפ "ת' לדעת אם קב: המטרה. כמו הוכחה בלוגיקה•

פ המופיעות"או נובעת מאחת הת, F- א היא ב"פ שכ"סדרה סופית של ת: הגדרת הגזירה•

.פ האחרונה היא זו שנגזרת"והת, ס כללי ההיסק"לפניה ע

.הם כמו בלוגיקה( סינטקטית)ויכיחות ( סמנטית)הסימונים לגרירה •

:כללי ההיסק הגזירה•

Aאזי A⊇Bאם )רפלקסיביות 1. B - )זוהי אקסיומה

XAאז ABאם )הוספה \אוגמנטציה2. XB)

טרנזיטיביות3.

:אקסיומות נגררות מהכללים הבסיסיים•

⇒ABC- איחוד 1. AB , AC

Page 18: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

AB- פירוק 2. , AC⇒ ABC

AB- טרנזיטיביות -פסודו3. , BCD⇒ ACD

מבצעים הוכחה בה כל שלב משתמש בכלל היסק ובשורות שלפניו, בעזרת חוקים אלו•

.בהוכחה

בכדי להוכיח נאותות צריך להוכיח כי כל. – כל הנגזר הוא נגררנאותההיא , פ"גזירת ת•

.ולבסוף באינדוקציה על מספר השורה, כלל היסק הוא נאות

Xפ "נצא מת. שלימההגזירה היא גם • Yבה, ניצור טבלא בת שתי שורות. לא יכיחה

חייבת Y. ואילו שאר האטריביוטים שונים בין שתי השורות, שווה בשתיהן Xהסגור של

צריך גם. ולכן לא מתקיימת גרירה( אחרת יכיחה מיידית)להכיל אחד האטריביוטים הללו

למקרה בו הגורר, פ"מתקיימות – עבור כך יש להפריד כל ת F- פ ב"להראות כי כל הת

.או שלא, Xשבה מוכל בסגור של

הסגור

האטריביוטים שניתנים לגזירה' היא קב, Fפ "הת' ביחס לקב Xאטריביוטים ' הסגור של קב•

X, כלומר. X- מ F+={A | F |- X A}.

X: למה של הסגורמכאן נובעת ה• Bם "אםX F+⊃B.

F- יסומן ב, F- פ הנגררות מ"כל הת' הוא קב Fפ "ת' הסגור של קב• +

אם הסגורים שלהן שוויםשקולותפ ייקראו "של ת' שתי קב•

מפתחות

K- הוא קבוצת אטריביוטים כך ש Rשל סכמה K על-מפתח• +=R

על-קבוצה שהיא מפתח-אין לו תת, על מינימלי – כלומר- הוא מפתחמפתח•

non-redundent cover כפולויות – - כיסוי חסר

,אם הסגור שלהן שווה Fכפילויות של -תיקרא כיסוי חסר G, אזי. פ"של ת' קב F,Gיהו •

:מקיימת Gוכן

אטריביוט נגרר יחיד G- פ ב"לכל ת1.

אטריביוט מיותר G- פ ב"אין באף ת2.

Page 19: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

פ מיותרת"אף ת G- אין ב3.

אלגוריתמים עבור גרירה וסגור

:Fת”פ ' עם קב Xאטריביוטים ' חישוב הסגור של קב•

.i מאתחלים אתV הסגור להיות ' קבX ,האטריביוטים' קב

.iiכל זמן שיש ב -F פ "תUWכך ש -U מוכלת ב -V ,מוסיפים ל -V אתW

F פ"ת' חישוב סגור של קב•

(פ טריוויאליות או כאלו שנובעות מאקסיומת הפירוק"לא נתעסק עם ת)

(לאלגוריתם זמן ריצה אקספוננציאלי)

.i עבור כלX פ מסויימת ב" אטריביוט המופיע בצד הגורר של תהמכיל -F אך לא בצד

X: פ"ונכניס את הת Xנחשב את הסגור של , הנגרר שלה X +

פ שקולות"של ת' קב F,Gחישוב האם •

(ריצה ריבועי-אלגוריתם בעל זמן)

.iפ ב"לכל ת -G בודקים אם היא נובעת מ-F

.iiפ ב"לכל ת -F בודקים אם היא נובעת מ -G

Fכפילויות של -חישוב כיסוי חסר•

.iפ ב"מפרקים כל ת -F ניתן להניח ש, או; כך שיש בה רק נגרר יחיד -F כל מראש

.iiפ ב"עוברים על כל ת -F ,מוחקים כל אטריביוט גורר מיותר שיש לה

.iiiפ מיותרת"מוחקים כל ת, פ שנותרו"עוברים על כל הת

Fתחת Y של על-הוא מפתח Xחישוב האם •

.iאם הוא שווה ל, מחשבים את הסגור שלו -F על-אזי זהו מפתח

מפתח Xחישוב האם •

.i מחשבים את הסגור שלו – אם אינוY ,זהו אינו מפתח

.iiשלו בגודל ' הקב-מחשבים את הסגור של כל תתיn-1 . אם אחד מהןY, X אינו

.אחרת הוא מפתח, מפתח

חישוב מפתח•

.iבצע :K=R

.ii לכלi לגודל של 1ביןR ,בצע:

Page 20: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

Fאם • |-K−{i R}i R , בצעK=K−{i R}

.iii החזר אתK

Page 21: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

תיאוריית תכנון סכמות – הערכת בעיות ופתרונות בסכמות

אפיון בעייתיות בסכמות

-לא)פ "דבר זה אפשרי אם קיימת ת. סכמה בעייתית אם היא מאפשרת שכפול מידע•

.על-כך שהצד הגורר שלה אינו מפתח( טריוויאלית

פירוק - פתרון בעיות בסכמות

פ שצידה הגורר"א לא תכיל ת"אשר כ, חלוקה לשתי סכמות נפרדות, הפתרון יכול להיות•

.על-אינו מפתח

,R1(האטריביוטים' בעלות קב) – הסכמות פירוק• ... , Rn ייקראו פירוק שלR אם

:מתקיים

R- שווה ל\ל חלקית"כנ' כל קב1.

R- שווה ל' איחוד כל הקב2.

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

היחס המקורי מתקבל מצירוף טבעי של היחסים בפירוק•

פירוק ללא אובדן

עבור הסכמה rאם לכל יחס ( lossless-join decomposition)ללא אובדן פירוק ייקרא •

R ,מתקיים :r=R1r joinR2

r join ... join Rnr , כלומרr מתקבלת מהאיחוד

.א מהסכמות"על כ rהטבעי של ההטלה של

או מכיל אותו, r- לשווההאם הוא , השאלה היא. rהאיחוד הטבעי תמיד יכיל את : לשים לב•

.ממש

אלגוריתם לבדיקה האם פירוק הוא ללא אובדן

עמודותיה האטריביוטים, רושמים טבלא של היחס המקורי•

aiלכל אטריביוט הנמצא ביחס ירשם , בשורה זו. לכל יחס בפירוק תהיה שורה בטבלא•

biולכל אטריביוט שאינו ביחס ירשם , מספר האטריביוט iכאשר , j כאשרi מספר היחס

Page 22: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

.מספר האטריביוט j- ו( בפירוק)

י"צריך לתקן אותה ע, פ בין שתי שורות"לכל הפרה של ת: פ"צריך לדאוג לקיום הת•

.ולא להיפך aולהוסיף bתמיד נעדיף למחוק . העתקה משורה אחת לאחרת

.אחרת הוא עם אובדן, הפירוק הוא ללא אובדן, ים-aאם יש שורה שכולה , בסיום•

פ " הטלה של קבוצת ת

.פ נשמרות בכל אחד מהיחסים בפירוק"יש לשים לב אילו ת, כאשר מפרקים יחס•

,R1, סכמה Rתהי • ... , Rnהפירוק שלה ,F ההטלה של אזי . פ המקוריות"הת' קבF על

Ri , מסומנתRiF ,היא הקבוצה :{X Y | X Y ∈F + , XY⊂Ri} -פ"כל הת

.בלבדRiהמתייחסות לאטריביוטים של Fבסגור של

Riסכמה יהיו -פ של כל תת"הת, בפירוק•F .פ של תתי"הצירוף יקיים את כל הת-

.הסכמות

decomposition preserving Fds פ – " פירוק המשמר ת

,R1- כאשר מפרקים אותה ל, Fפ "בעלת ת Rשלסכמה , המשמעות היא• ... , Rn ,הצירוף

.Fהטבעי של הסכמות הללו יקיים את

.סכמה-על כל תת Fשווה לסגור של איחוד ההטלה של Fפ אם הסגור של "פירוק משמר ת•

F: או פורמלית +=∪RiF +

,F- פ ב"ניתן לבדוק לכל ת( בסיבוכיות פולינומיאלית)פ "בכדי לבדוק האם היחס משמר ת•

.האם היא בסגור של האיחוד

BCNF

Xפ "אם כל ת BCNFהיא בצורה Rסכמה • A בסגור שלF מקיימת:

.iX Aאו, טריוויאליות

.iiX על-מפתח

:BCNFאלגוריתם למציאת פירוק •

תלויות עבורו כל סכמה בפירוק היא מצורת-משמר, אובדן-היינו רוצים למצוא פירוק חסר

Page 23: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

BCNF.

.עצמו F- אזי יש כזו גם ב, Fבסגור של BCNFאם יש הפרה של

.i מחפשים הפרה שלBCNF ב -R

.iiפ "אם התX A הפרה שלBCNF ב -R , אזי נפרק אתR סכמה: לשתי סכמות

XA , וסכמהR-A .בכל אחת מהסכמות הללו ,X A אינה הפרה שלBCNF.

.iiiפ עבור כל סכמה בפירוק"נחשב את הכיסוי של הת

.ivנמשיך לפרק כל סכמה בפירוק

(lect6.pdf- הוכחה ב)ל הוא ללא אובדן "הפירוק הנ•

פ" על תאינו שומרהפירוק •

פ"אסור לפצל מפתחות אם רוצים לשמור על הת•

3NF – 3 normal form

Xפ "אם כל ת 3NFהיא בצורה Rסכמה • A בסגור שלF מקיימת:

.iX Aאו, טריוויאליות

.iiX או, על-מפתח

.iiiA שייך למפתח כלשהו שלR

:3NFאלגוריתם למציאת פירוק •

Fפ "וסט ת Rמתחילים עם סכמה

.i מוצאים אתG ,כפילויות של -כיסוי חסרF

.iiפ "מכל תX Aב -G מוציאים סכמהXA

.iiiעל של -אם אף אחת מהסכמות לא מכילה מפתחR ,אזי מוסיפים סכמה שהיא מפתח

(מבטיח צירוף ללא אובדן )Rשל

.ivאפשר לאחד סכמות עם אותו מפתח

.אובדן-פ וכן הצירוף הוא ללא"הפירוק שומר על ת, 3NFכל סכמה בפירוק היא : מקיים•

יתרונות וחסרונות של פירוקים

:יתרונות•

(אין רשומות מיותרות)הפירוק מונע כפילויות 1.

Page 24: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

ללא(, אין קישור בין המידע שבטבלא אחת לאחרת)מאפשרים לשמור מידע חלקי 2.

NULLשימוש בערכי

:חסרונות•

כלומר היכן שאין, NULLהצירוף הטבעי לא יכיל ערכי , ל"הנ 2במקרה מסעיף 1.

.הצלבה בין הנתונים הם לא יהיו מוצגים בצירוף

:פעולת האיחוד המורחבכדי להיפטר מבעיה זו נגדיר את

.i לכל סכמהS⊆R , מדפנים את העמודות החסרות שלR ב -NULLים

.iiמבצעים איחוד

.iiiמוחקים רשומות שכלולות ברשימות אחרות

,Rכעת נפעיל את האיחוד המורחב על כל הצירוף הטבעיים ללא אובדן של

.ונקבל יחס המכיל את כל המידע

מספיק לקחת את, אטריביוט מסויימת בלבד' אם רוצים לחשב את האיחוד ללא אובדן של קב

כל הצירופים הטבעיים המינימליים – שלא ניתן להשמיט מהם סכמה ושעדיין יכילו את

.האטריביוטים המבוקשים

מסובכים ולא עברתי עליהם, 30-43שקפים , lect7.pdf: להשלים

Page 25: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

אופטימיזציות של שאילתות

הצגת הבעיה

יש מספר שיטות? כיצד מחשבים את השאילתה . כמות הנתונים גדולה מגודל הזיכרון•

בכדי להשיג יעילות, אם יש מספר אפשרויות, באיזה סדר מחשבים את השאילתה•

?מקסימלית

?כך שהגישה אליהם תהיה מהירה , כיצד מארגנים את הקבצים על הדיסק•

מבוא לאכסון מידע

זו היחידה המינימלית שניתן, כל קריאה מביאה בלוק יחיד(. דפים)הדיסק מחולק לבלוקים •

.לקרוא

כ"א מהם בד"כ, הקובץ פרוש על מספר בלוקים. מאוחסן בקובץ משלו( טבלא)כל יחס •

.מכיל מספר רשומות

בסוף. המורכב ממספר הבלוק וממספר הרשומה בתוך הבלוק, Ridע "כל רשומה מזוהה ע•

הבלוק יש רשומה שאומרת איפה מתחילה כל רשומה הרשומה בבלוק

שם, תפקידו לאכסן בלוקים הנקראים מהדיסק. Bufferבזכרון הפנימי יש חלק הנקרא •

-כ ה"מנהל בד buffer- את ה. ומשם הן נכתבות חזרה לדיסק, מתבצעים עליהן פעולות

DB.

:סוגי קבצים•

טוב למעבר סדרתי. הוספה בסוף הקובץ. קובץ ערמה – ללא מיון1.

טוב לחיפוש בטווח ערכים. מכווץ, קובץ ממויין – לאחר מחיקה2.

.תפוסה 80%שומרים על . של הערכים hash- ה' מאוכסן לפי פונ – hashקובץ 3.

טוב במיוחד עבור חיפושים עבור מפתחות מסויימים

אינדקסים

נקראת )Xאטריביוטים ' מאפשר גישה מהירה לרשומות בעלות ערכים מסויימים בקב•

(מפתח החיפוש של האינדקס

Page 26: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

:יש שתי אפשרויות למימוש•

,בתוך קובץ המידע – במקרה זה מפתח החיפוש חייב להיות על מפתח של היחס1.

במקרה זה ייקרא האינדקס אינדקס ראשי. ויכול להיות רק אינדקס אחד

הנתונים יכולים להיות מהצורה, במקרה זה". נתוני כניסה"קובץ , בקובץ נפרד2.

K , Rid כאשרK או , הערך של מפתח החיפושK , RidList .במקרה זה

ייקרא האינדקס אינדקס משני

(clustering)קיבוץ אינדקסים •

סדר הרשומות באינדקס דומה לסדר בקובץ היחס, באינדקס מקובץ1.

אך גם אינדקסים משניים יכולים להיות מקובצים, כל אינדקס ראשי הוא מקובץ2.

וכך ניגשים למפתח הקרוב, חייב להיות מקובץ. אינדקס דליל – מכיל רק חלק מהערכים•

.למפתח שמחפשים ומשם מתקדמים סדרתית( מלמטה)ביותר

סוגי מבנים של אינדקסים•

.1 B+ Tree – אם האינדקס מקובץ. פ טווח"מאפשר חיפוש ע, כ"בזה משתמשים בד,

,אזי קל יהיה למצוא בדיוק את הדפים שנדרש להביא)<..(, פ טווח "ומחפשים ע

ייתכן שכל אינדקס מצביע לדף אחר ולכן, אם אינו מקובץ. א פעם אחת"ולקרוא כ

.היעילות תהיה נמוכה יותר

.2Hash – חייב לאפשר הרחבה ולכן שינוי דינמי של פונ, פ שוויון"חיפוש רק ע'

אם יש רשימה של ערכים עבור ערך ערבול אחד והקובץ לא, גם כאן. הערבול

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

( מכפלה קרטזית ) פעולת הצירוף

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

(אם היא יותר מבינארית)והן לסדר ביצוע הפעולה , בזיכרון

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

:בכדי לטפל בכך יש מספר שיטות

.1Block nested-loops join – בכל פעם טוען דף, טוען את היחס הקטן יותר לזכרון

'מצריך מס. כותב אותו וטוען את הבלוק הבא, מחשב את הצירוף, מהיחס השני

(.אחד לקריאה מהיחס השני ואחד לכתיבה )2+ בלוקים כמו שיש ביחס הקטן

Page 27: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

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

.ולכל אחת מבצעים את האלגוריתם האחרון n-2היחס הקטן לחתיכות בגודל

abהסיבוכיות תהיה a /n−2 , כאשרa,b הבלוקים ביחסים' מס ,n מספר

הבלוקים בזיכרון

.2Index nested-loops join – קוראים את היחס, אם יש אינדקס על אחד היחסים

פ האינדקס את הרשומות המתאימות לו"בלוק ולכל אחד מוצאים ע-הראשון בלוק

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

m+nגודל -בסדר

.3Sort-merge join – זמן מיון לכל אחד: זמן. א מהיחסים ואז ממזגים"ממיינים כ

(הבלוקים של היחסים' סכום מס)זמן מיזוג + מהיחסים

.4Hash join( – סוף , להשליםlect9.pdf ) מבצע שניHASH ואם יש מספיק

(.num blocks*)3מצליח לבצע את הצירוף בזמן , זכרון

פעולת ההטלה

ניתן לבצע מתוך, אם מבצעים הטלה על איברים במפתח החיפוש של האינדקס בלבד•

(הורדת כפילויות)האינדקס

optimizer-blatמבנה של , lect10.pdf: להשלים

הערכה של גודל תוצאות

:מספר הגדרות•

.1cardinality – הרשומות בכל יחס – ' מסNtuples

.2size – הדפים' מס ,Npages ,בכל יחס

.3index cardinality – מספר הערכים השונים שאינדקסi – יכול לקבל

Nkeys i

הדפים באינדקס' גודל האינדקס – מס4.

של האינדקס B TREE- הרמות ב' גובה האינדקס – מס5.

לאינדקס מסויים' והמינ' האינדקס – ערכי המקס( range)טווח 6.

Page 28: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

שהוא הכפל של, max cardinality- מתחילים מה, כאשר מחשבים גודל תוצאות מוערך•

,reduction factors- מכפילים ב, משם. מספרי הרשומות של הטבלאות המשתתפות

(.where)פ הבחירה "הנובעים מביטול רשומות ע

•Reduction factors:

מחשבים לפי, אם יש אינדקס – column = valueבחירת ערך – 1.

1/NKeys value .1/10מניחים , אחרת.

עבור מספר1/NKeysvalue( - natural join, etc)השוואה בין אטריביוטים 2.

אם אין מפתחות 1/10; המפתחות המקסימלי

:י"מחושב ע, אם יש אינדקס – column > valueטווח ערכים – 3.

IHighi−valueIHigh i −ILow i

.

Oracle Tuning

:Oracle- אינדקסים ב•

.1unique index – משמש לבדיקה שהערכים הםunique .נוצר אוטומטית עבור

primary key:create unique index ind1 on Air.bאו uniqueטבלאות עם

B-Tree - create index ind1 on Air.bרגיל – 2.

.3Hash Table - create bitmap index ind1 on Air.b .יוצר וקטור בינארי שכל

ערך בו פונה לרשומה יחידה

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

upper name ניתן לעשות אינדקס עלSailors upper name

אין לה מספרי, פ אינדקס"טבלא הממויינת ע – index-organized tableניתן ליצור •

טוב למידע סטטי או כאשר השאילתות הן על המפתח הראשי. שורות

•clustering – טבלאות קרוב על הדיסק – מועיל כאשר מבצעים איחוד שלהן' מיקום מס.

cluster clusterName- כ מוסיפים טבלאות עם ה"אח, clusterיוצרים

:סוגי אופטימיזציות•

.1first-rows vs all_rows – האם להחזיר מהר הכל או רק שורות ראשונות

:oracle optimizer- ה•

Page 29: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

לטבלא analyzeתחילה עושים 1.

...explain plan set statement id=',,' for Selectכ עושים "אח2.

:סוגי גישה לטבלא3.

•table access full – קריאה סדרתית

•table access by rowid – פ אינדקס"ע

למספר, range scan- או ב( לערך יחיד )unique scan- ניתן לגשת לאינדקס ב4.

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

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

(תחילית של מחרוזת)הטווח

upperלמשל , אין שימוש עבור פונקציות6. name

NULLאינדקסים לא עובדים על 7.

פ שרשור"יש סדר ע)ניתן להשתמש כדי למצוא רישא של שדות המופיעים באינדקס 8.

(.השדות

•Data Sets:

intersect, למשל; אופטציות שמצריכות לחשב את כל התשובות לפני החזרתן1.

sort group, sort- ו, מיון כאשר מורידים כפולים – sort unique: י"בשימוש ע2.

aggregate – עבורgroup-by , עבורmin, max etc

:Joinסוגי •

.1Loops join – ורוצים תוצאות מיידיות, שונהעבור טבלאות בעלות גודל

.2Hash join – תוצאות מיידיות, טבלאות קטנות

.3sort-merge – אם הטבלאות ממויינות, איטי יותר

Page 30: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

תיאוריה - ניהול טרנזקציות

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

,מניחים למען הפשטה כי תוכנית יכולה לקרוא פריט פעם יחידה ולכתוב אותו פעם יחידה•

.ואם השניים מתקיימים אזי הקריאה מתבצעת לפני הכתיבה

– סידור של פעולות המתבצעות במקבילתזמון•

ורק אז יש, תזמון סדרתי – כל הפעולות מתוכנית אחת מתבצעות מתחילתן ועד סופן1.

.תזמון כזה תמיד נכון. גישה לתוכניות אחרות

אחרת מתחילה, סיימה( טרנזקציה אחת)סדרתי – לפני שתוכנית אחת -תזמון לא2.

אם הם נותנים אותה תוצאה לכל חישוב אפשרישקוליםשני תזמונים עם •

שקילות מבטית

Sשני תזמונים • 1,S :אם( מבטיח שקילות) שקולי מבטים הם 2

שניהם מכילים אותן פעולות1.

S- אם ב2. Tי הטרנזקציה "כלשהו התבצעה ע Aהקריאה הראשונה של 1 k ,אזי

S- גם ב Tהטרנזקציה 2 kתבצע את הקריאה הראשונה

S- אם ב3. Tהטרנזקציה 1 k קוראת ערך שלA י "שנכתב עT i ,אזי גם ב-

S הדבר מתקיים2

S- אם ב4. Tי הטרנזקציה "כלשהו התבצעה ע Aהכתיבה האחרונה של 1 k ,אזי

S- גם ב Tהטרנזקציה 2 kתבצע את הכתיבה האחרונה ל -A

-אם יש לו תזמון סדרתי שקול( view-serializable) סדרתיות מבטית-ברתזמון הוא •

.מבט

אך ייתכן שהערך מושתת על אלמנטים)ללא שקראנו אותו A- – כתיבה לכתיבה עיוורת•

(אחרים שנקראו

קונפליקטים ושקילות קונפליקטים

אם שתיהן מתייחסותקונפליקטיש ( לפחות אחת מהן פעולת כתיבה)בין שתי פעולות •

Page 31: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

י והפעולות שייכות לשתי תנועות שונות"לאותו פריט ע

בהנחה שאין כתיבות, י תנועות שונות"קובע את סדר הפעולות על פריט המתבצעות ע•

עיוורות

, אם הם מורכבים מאותן תנועות ואותם קונפליקטיםשקולי קונפליקטיםשני תזמונים הם •

.סדר ההופעה של הפעולות עבור הקונפליקט בשני התזמונים זהה, ולכל קונפליקט

שקילות קונפליקטים גוררת שקילות מבטים•

Sקונפליקטית לתזמון -כך שהוא שקולS1אם יש תזמון סדרתי • Sאזי נאמר כי , 2 2

.סדרתיות קונפליקטית-ברהוא

.סדרתיות מבטית-מושג זה גורר בר•

בדיקת שקילויות

שקודקודיו הם התנועות השונות, גרף הקדימויותהנקרא , יוצרים גרף•

נשים, R- צריכה לקרות לפני זו ב S- כך שפעולה ב S,Rאם יש קונפליקט בין תנועות •

R- ל S- צלע מכוונת מ

סדרתיות קונפליקטית-ם המערכת בר"הגרף חסר מעגלים אם•

כללי

גוררת שקילות מבטיםתמידשקילויות קונפליקטים •

.תיתכן שקילות מבטים ללא שקילות קונפליקטים, אם יש כתיבה עיוורת•

Page 32: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

ניהול טרנזקציות – מעשית

סדרתיות-המטרה – להבטיח שכל התזמונים הם ברי

מנגנון הנעילות

. Xומפתח בלעדי Sלכל פריט יהיה מפתח משותף •

Xכאשר כותבים פריט נועלים אותו בעזרת , Sכאשר קוראים פריט נועלים אותו בעזרת •

את כל זאת מאפשר מנהל הנעילות•

אם אין עליו נעילה )Aזמנית נעילה משותפת על פריט -מספר עסקאות יכולות להחזיק בו•

(בלעדית

אזי היא הנעילה היחידה עליו, Aאם יש נעילה בלעדית על •

two phase locking - 2PL

:עסקה מבצעת שימוש במנעולים בשני שלבים•

שלב קבלת המפתחות1.

.לא ניתן לקבל עוד מפתחות, לאחר שחרור המפתח הראשון. שלב שחרור המפתחות2.

סדרתיות קונפליקטית-הוא בר 2PLתזמון המקיים •

deadlock מצבי קיפאון –

כאשר כל אחת מחכה למפתח ששמור אצל העסקה, קורה כאשר יש מעגל של עסקאות•

"תקיעה"יש , שאחריה

אם יש מעגל – יהיה-”. מחכה ל"בו הקשתות מהוות קשר , בונים גרף של העסקאות•

deadlock.

:שניהם מעדיפים לבטל את העיסקה החדשה יותר. יש שני מנגנונים, בכדי למנוע זאת•

.1wait-die – אם היא(, ומתחילים אותה מחדש)מבטלים את העיסקה המחכה למפתח

החדשה יותר

.2wound-wait – אם(, ומתחילים אותה מחדש)מבטלים את העיסקה המחזיקה מנעול

היא החדשה יותר

Page 33: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

בכדי למנוע, הזמן המקורית שלה-נותנים לה את חותמת, כאשר מתחילים מחדש עיסקה•

בו היא לעולם לא מסיימת להתבצע", הרעבה"מצב של

בעיית הפנטומים

ניתן עדיין להוסיף רשומות ללא, לכן. ולא על טבלארשומותנעילה מתבצע על •

.קונפליקטים עם מפתחות קיימים

סדרתיות קונפליקטית אך לא מבטית-ייתכן כי העסקאות יהיו בר, במקרה זה•

הפריטים' סדרתיות מבטית רק אם קב-סדרתיות קונפליקטית גוררת בר-מסקנה – בר•

.עליהם עובדים לא משתנה

.נעילה כל הרשומות – predicate lockingפתרון אפשרי – •

מנעולים עם גרעיניות מרובה

ורשומות 2- דפים ברמה ב, טבלאות ברמה הראשונה, המכיל שורש, DB- בונים עץ של ה•

.3- ברמה ה

.או רשומה בודדת, או דף, לעיתים משתלם לנעול טבלא; צריך להחליט איזה פריט לנעול•

,intention locksהם – IS, IXיש גם . העץ-נועלת את כל תת Xאו Sי "נעילת צומת ע•

.משמעותם שיש כוונה לנעול

-רוצה לומר . IXאין Xאו Sאם יש . על צומת( ביחד )IS- ו S' יכולים להיות מס•

intention lock יכול להיות קיים רק אם אין דבר המונע ממנו מלהפוך לנעילה אמיתית.

אין אף נעילה אחרת על הצומת Xאם יש •

:אופן הנעילה•

.iסוגי הנעילות 4- עסקה נועלת את השורש בעזרת אחד מ

.iiעסקה יכולה לנעול צומת ב -S אוIS אם יש להIS ל עבור "כנ; לאבא שלוIX( אם

(לאב לא צריך עוד נעילות X\Sיש

.iiiניתן להסיר נעילה מצומת רק אם אין נעילה על בני הצומת

.iv 2הנעילות מקיימותPL – כ משחררים"אח, תחילה נועלים

סדרתיות קונפליקטית-הפרוטוקול מייצר רק תזמונים ברי•

(הסלמה)ומאוחר יותר עוברים לגבוהים יותר , לעיתים מתחילים במנעולים נמוכים•

Page 34: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

ניהול טרנזקציות ללא נעילות

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

לטרנזקציה להתחייב רק אם התזמון שנוצר שקול לזה שנבחר בתחילה – אחרת מבטלים

אותה ומתחילים מחדש

בקרת מקביליות אופטימית•

בהנחה שהסיכוי לבעיה קטן, הבדיקה מתבצעת רק בסוף התנועה1.

:כל תנועה מבצעת שלושה שלבים2.

.iלתוכו קוראת נתונים ובו, קריאה – כל טרנזקציה מקבלת שטח עבודה פרטי

ביניים-מבצעת עדכוני

.iiהסדרתיות-בדיקה – שאכן לא פגענו בבר

.iiiכתיבה ל -DB

.קטע הקריטיזהו ה. ז"י תנועה אחת בו"מתבצעים ברצף ורק ע ii,iiiשלבים 3.

:אופן הבדיקה4.

.i בתחילת שלב הבדיקה כל תנועה מקבלתTS-timestamp( התזמון הסופי

(יםTs- פ ה"יהיה צריך להיות שקול לתזמון סדרתי ע

.iiהעסקה שרוצה להתחייב צריכה לבדוק שלכל טרנזקציה אחרת הנבדקת:

או , אינה כותבת לאף פריט בו משתמשת העסקה•

וסיימה לפני שהעסקההיא התחייבה, שלה קטן מזו שנבדקת TS- ה•

הנבדקת התחילה

ניתן להרוג כל עסקה שקראה פריט לתוכו, אפשרות אחרת – כבר בשלב הכתיבה5.

.אנו כותבים

זמן-בקרת מקביליות מבוססת חותמות•

TSכאשר עסקה מתחילה היא מקבלת 1.

,של העסקה הצעירה ביותר שקראה אותו TS- אחד הוא ה: TSניתן לכל פריט שני 2.

והשני של העסקה הצעירה ביותר שכתבה אליו

: כתיבה יש בדיקה\ בכל קריאה 3.

.iעם )י עסקה צעירה יותר "עסקה לא יכולה לקרוא פריט שנכתב עTS גדול

Page 35: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

(יותר

.iiי עסקה צעירה יותר"עסקה לא יכולה לכתוב פריט שנקרא ע

עד שהיא מתחייבת, יש נעילה של פריטים שעסקה כתבה4.

גרסאות-בקרת מקביליות רבת•

TSגם היא מבוססת 1.

כותבת לעותק פרטי שלה, כל עסקה הכותבת לפריט2.

זה של העסקה הצעירה ביותר שקראה אותו – RTSלכל העותקים אותו 3.

שלה TS- הקטן מה, הגדול ביותר WTS- קריאה מתבצעת מהעותק בעל ה4.

ORACLE- מנגנון זה כנראה קיים ב5.

Page 36: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

Data Mining

למשל אסוציאציות לגבי, DB- מתייחס לסטטיסטיקות והסקות שניתן לבצע על מידע ב•

מידע שמוכנס בטרנזקציות מסויימות

•itemset – לגביה אנו רוצים להסיק, של ערכים באחת העמודות' קב

תדירות הופעה של פריטים בטרנזקציה

•Support of itemset – זהו השבר שמהווה את החלק היחסי של העסקאות שמכילות את

itemset- כל הפריטים שב

שהגדרנו min support- שלו גדול מ support- אם ה frequentלהיות itemsetנכנה •

•A-priory property of frequent itemsets – קבוצה של -גם כל תתfrequent

itemset היאfrequent itemset.

כ בודקים האם"אח, 1בגודל itemsetsמשתמשים בתכונה זו – בתחילה רצים ומוצאים •

.מכל גודל itemsets- התוצאה היא כל ה'. וכו 2בגודל frequent itemsetsהם מרכיבים

אסוציאציות בין פריטים

נאמר כי זהו חוק, אם יש פריט שקנייתו בסבירות גבוהה גורמת לקניה של פריט אחר•

.A⇒Bאסוציאציה

בסבירות גבוהה גם כל, קיים LHS' בקב itemאם כל - LHS⇒RHS- נקרא חוק ה•

item ב -RHS יתקיים

כאשר מחפשים תמיכה. כפי שהוגדרה לעיל (support)תמיכה לחוק אסוציאציה יש •

LHS⇒RHS- התמיכה ב. עם תמיכה זו לפחות itemsetsמחפשים רק , מינימלית

Support- מוגדרת כ LHS∪RHS .

'מוגדר כשבר שהוא מסLHS⇒RHS- הביטחון ב. confidenceכן יש מידת בטחון – •

.LHSחלקי כל אלו המכילות את , LHS∪RHSהטרנזקציות המכילות את

מחלקים אותו, frequent itemset Xלוקחים כל : אלגוריתם למציאת קשר אסוציאטיבי•

Support: מידת הבטחון היא. LHS, RHS, לשתי קבוצות X /Support LHS

Page 37: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

רגרסיה וסיווג

.לכל רשומה" עמודת ערך"מתייחסים להכנסת •

classificationאזי זוהי , אם עמודה זו היא קטגוריה•

regressionזהו , אם היא נומרית•

נרצה. שתקבל ערכים מבחוץ, פ עמודה חדשה זו"של הרשומה ע" ערך"נעריך , בכל מקרה•

.לחזות מה יהיה בעמודה זו

ומשם יש אינטרפולציה שמוצאת כיצד לעשות, על מספר פריטים מצומצם testמריצים •

.מקסימום לעמודה הנוספת\ מינימום

Page 38: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

התאוששות מנפילה

(commit)כך שלא תתבצע חלק מתוכנית , צריך ביצוע אטומי של תוכניות•

ואם כן אזי כל, rollbackמבצעים commitמנגנון ההתאוששות מוודא כי אם לא התבצע •

הנתונים נשמרו בצורה תקינה

קריאה מלוכלכת

Tמתייחס למצב בו • T- קוראת ערך ש1 Tכ "ואח, כתבה2 abortמבצעת 2

י"שנכתבו ע- ( שמתחייבת רק אחרי שאו)עסקה קוראת רק ערכים , בכדי להימנע ממצב זה•

(commitבוצע עבורן )עסקאות שכבר אומתו

.תנאי זה מאפשר התאוששות•

-מחייב שעסקה תשחרר את המפתחות שהיא מחזיקה רק לאחר ה strict 2PLמנגנון •

commit (ביטולים)מנגנון זה מאפשר התאוששות ומונע מפל הפלות . שלה

:של התאוששות ACIDתכונות •

.1Atomic – כל פעולה מתבצעת או שלא

.2Consistency – אם היה עקבי בתחילתה, המסד נשאר עקבי בסוף הפעולה

.3Isolation – עסקאות לא מושפעות אחת מהשניה

.4Durability – ברגע שעשינוcommit ,המידע מובטח להיות ב -DB

י מנגנון ההתאוששות"ע 1,4תכונות , י מנגנון לבקרת מקביליות"מובטחות ע 2,3תכונות •

אטומיות

.logבקובץ (, וכולל )commit- עד ל, כותבת את כל השינויים שהיא מבצעת, כל עיסקה•

,בלוג commit- כאשר נכתב ה. db- הוא יכול להיכתב גם ל, log- ברגע שמשהו נכתב ל

. אל המסד log- העסקה כבר כתבה את כל השינויים שנכתבו ב

-ניתן מהמידע בו לשחזר את הנתונים הקודמים ב, אחרי נפילה commitאם בלוג לא כתוב •

DB.

Page 39: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

.כ על דיסק נפרד"שכן הכתיבה אליו סדרתית והוא בד, מנגנון הלוג מייעל•

Buffer Pool וה - Log

למקרה, השינויים שהיא ביצעה בזכרון יכולים לא להיכתב מיד, כאשר עסקה הסתיימה•

שעסקה אחרת תרצה להשתמש בהן

ניתן יהיה. commit- – עסקה לא חייבת לכתוב את השינויים לדיסק לפני הכפייה-אי•

.לשחזר מהלוג את המידע

ניתן לכתוב אחד הדפים, וצריך לטעון דף נוסף buffer- – אם נגמר הזיכרון בגניבה•

.פ הלוג"כ ניתן לשחזרו ע"ואם תהיה בעיה אח, ולהחליפו בחדש

.כפיה-י גניבה ואי"ביטול עסקאות ושיפור ביצועים ע, לסיכום – הלוג מאפשר שחזור•

התמודדות עם נפילות

לאלו rollback- לעסקאות שהסתיימו ו commitיש לבצע (, רגילה)כאשר יש נפילה •

שנפלו באמצע

recoveryתרחיש של – lect14.pdfסוף : להשלים

Page 40: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

שאלות

אטריביוטים' אלגוריתם עבור חישוב סגור של קב1.

פ"ת' אלגוריתם עבור חישוב סגור של קב2.

אלגוריתם עבור כיסוי חסר כפילויות3.

BCNFהגדר 4.

BCNFאלגוריתם עבור פירוק 5.

3NFהגדר 6.

3NFאלגוריתם עבור פירוק 7.

אטריביוטים היא מפתח' אלגוריתם לבדיקה האם קב8.

הגדר טרנזקציה9.

?מהו תזמון סדרתי . הגדר תזמון10.

?מבטים-מתי תזמונים הם שקולי11.

?מתי יש קונפליקט 12.

?מהי שקילות קונפליקטים 13.

אלגוריתם לבדיקת שקילות קונפליקטים14.

?ומתי , גוררת איזה סוג( קונפליקטים, מבטית)איזה סוג שקילות 15.

?מהו מנגנון הנעילות 16.

?2PLמהו 17.

?סדרתית ? סדרתיות קונפליקטית -מבטיח בר 2PLהאם 18.

?deadlockמהו 19.

?deadlockוכיצד מתמודד מנהל הנעילות עם , הזמן-מהי חותמת20.

?מהי הרעבה 21.

?מהי בעיית הפנטומים 22.

?מנעולים עם גרעיניות מרובה , וכיצד עובדים, מהם23.

?יכולים לחיות ביחד X,IX,S,ISאילו מבין 24.

תאר אותם? אילו מנגנונים לטיפול במקביליות בעסקאות קיימים ללא נעילות 25.

Page 41: סרוק םוכיס םינותנ ידסמ - Amazon S3....primary key -המ קלחכ ןהו:ISA םוגרת • הבוח .באה-תאלבטל foreign key הקיזחמ ןב-תאלבט

?פריטים ' מהי תמיכה של קב26.

?מה מידת הביטחון באסוציאציה ? מתי תתקיים ? מהי אסוציאציה 27.

?עם מידת תמיכה ובטחון מסויימת , כיצד בודקים את האסוציאציות הקיימות28.

?מה מבטיח קיומו של כל סעיף ? ACIDהתיבות -מהם ראשי29.

?strict PLמהו ? מהי קריאה מלוכלכת 30.

?וכיצד מייעלות את הביצועים , כפייה וגניבה-מהן אי31.