יותר

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


יש לי מפה של כ 4200 קמעונאים והייתי רוצה ליצור אשכולות, כאשר כל אשכול מכיל 10 קמעונאים ב- CartoDB. איך אני יכול לעשות את זה?


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

תוכל לראות דוגמה לשאילתת אשכולות כאן:

עם hgridA AS (SELECT CDB_HexagonGrid (ST_Expand (! Bbox !, grootste (! Pixel_width!,! Pixel_height!) * 48), grootste (! Pixel_width!,! Pixel_height!) * 48) as cell), bigs AS (SELECT * FROM) (בחר ST_Centroid (ST_Collect (i.the_geom_webmercator)) כ-_geom_webmercator, ספור (i.cartodb_id) כ- points_count, 1 כ- cartodb_id, array_agg (cartodb_id) כ- id_list מתוך hgridA, (בחר * מ- tornados_copy_) hgridA.cell) GROUP BY hgridA.cell) t WHERE points_count> 100), hgridB AS (SELECT CDB_HexagonGrid (ST_Expand (! bbox !, grootste (! pixel_width!,! pixel_height!) * 36), grootste (! pixel_width!,! pixel_height!) * 36) בתור תא), באמצע AS (SELECT * FROM (SELECT ST_Centroid (ST_Collect (i.the_geom_webmercator)) בתור_geom_webmercator, ספור (i.cartodb_id) כנקודות_ספר, 1 כ- cartodb_id, array_agg (cartodb_id) hgridB, (בחר * מתוך tornados_copy) i שבו ST_Intersects (i.the_geom_webmercator, hgridB.cell) ו- cartodb_id NOT IN (SELECT unnest (id_list) FROM bigs) GROUP BY hgridB.cell) t WHERE_point_count> 25), hgridC AS (SELECT CDB_HexagonGrid (ST_Expand (! bbox !, grootste (! pixel_width!,! pixel_height!) * 24), grootste (! pixel_width!,! pixel_height!) ) * 24) כתא), קטן AS (SELECT * FROM (SELECT ST_Centroid (ST_Collect (i.the_geom_webmercator)) בתור ה-_geom_webmercator, ספור (i.cartodb_id) כנקודות_נקודה, 1 כ- cartodb_id, array_agg (cartodb_id) AS id_list (בחר * מתוך tornados_copy) i שבו ST_Intersects (i.the_geom_webmercator, hgridC.cell) ו- cartodb_id NOT IN (SELECT unnest (id_list) מתוך גדולות) ו- cartodb_id NOT IN (SELECT unnest (id_list) FROM mids) GROUP BY hgridC.cell) t WHERE points_count> 5) בחר ב-_geom_webmercator, 1 point_count, cartodb_id, ARRAY [cartodb_id], 'origin' as src Tornados_copy WHERE cartodb_id NOT IN (select unnest (id_list) FROM bigs) and cartodb_id NOT IN (select F) mids) AND cartodb_id NOT IN (select unnest (id_list) FROM smalls) UNION ALL SELECT *, 'bigs' בתור src מתוך bigs UN ION ALL SELECT *, 'mids' כ- src מתוך mids UNION ALL SELECT *, 'smalls' כ- src FROM smalls

דוגמה אחרת זו משתמשת בקוד דומה אך מאפשרת למשתמש לבחור את גודל הרשת המגדיר את אזור האשכולות.


האם יש דרך להוציא את העיוותים עבור כל שורה בעת יצירת אשכולות עם קילומטרים?

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

אבל הוא מפריד את המרחקים ל -3 מערכים (או כמה שמספר אשכולות שאני יוצר). האם יש דרך לעשות זאת מבלי להפריד לפי תוויות/אשכול?

ברצוני להרחיב את מערך הנתונים המקורי שלי עם טור של המרחקים כדי שאוכל לזהות את המרחקים הגדולים ביותר. רציתי גם את המרחקים הקרובים ביותר אך הצלחתי למצוא זאת באמצעות הקוד הזה:


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

2.1 אלגוריתמים של קיבוץ היררכי

אלגוריתמים של אשכול היררכי הם אלגוריתמים של אשכולות קלאסיים שבהם נוצרות קבוצות של אשכולות. באלגוריתמים הירארכיים א נ × נ מטריצת סמיכות קודקוד משמשת כקלט ומטריצת הסמיכות מכילה ערך מרחק ולא ערך בוליאני פשוט [14]. אם מספר האלמנטים שיש להתקבץ מיוצג על ידי נ ומספר האשכולות מיוצג על ידי ק, אז מורכבות הזמן של אלגוריתמים הירארכיים היא או (kn 2). אלגוריתם אגרומטי הוא סוג של אלגוריתם אשכולות היררכי שבו כל רכיב בודד שיש לאשכול נמצא באשכול משלו. אשכולות אלה מתמזגים באופן איטרטיבי עד שכל האלמנטים שייכים לאשכול אחד. הוא מניח שמערכת אלמנטים והמרחקים ביניהם ניתנים כקלט.


יישום

מפרטים פונקציונליים

AEGIS-CCT יכולה ליצור אשכולות מטופלים בודדים וכן קבוצות של אשכולות מטופלים המבוססים על מודל גיאוגרפי פשוט. נקודות נתונים של אשכול מוצגות כקבצי משתנים (CSV) המופרדים בפסיקים, וניתן להוסיף אותן לקובץ קיים המסופק על ידי המשתמש. הכלי יכול גם ליצור קבוצות אשכולות שונות הנעות בערכן על פני פרמטר בודד כדי לאמת את אלגוריתמי הזיהוי בקפדנות. כדי ליצור אשכולות בודדים, המשתמש יכול לשנות מספר פרמטרים רלוונטיים להתפרצות (טבלה ​ (טבלה 1). 1). AEGIS-CCT יוצר לפחות שני קבצי פלט בכל פעם שהוא מבוצע, כאשר שמות הקבצים צוינו על ידי המשתמש. האחד הוא קובץ נתוני אשכול המכיל את נתוני האשכול המלאכותי, והשני הוא קובץ רשומה המתאר את הפרמטרים של אשכול ההפעלות. קובץ הנתונים מכיל מספר זיהוי נקודת אשכול (מוקצה מספרית מ -0 למספר הנקודות מינוס 1), קו הרוחב והאורך של נקודת האשכול והתאריך היחסי של נקודת האשכול. בעת יצירת סדרה של נ אשכולות, התוכנית מייצרת באופן אוטומטי נ קבצים עם מזהים מצורפים, כל אחד כקבצי נתונים נפרדים.

שולחן 1

פרמטרים שניתן לשנות בעת יצירת אשכול יחיד.

פָּרָמֶטֶרתיאור
מספר מזהה אשכולסימוכין או מספר זיהוי של משתמש שצוין עבור כל אשכול
מספר הנקודות באשכולמספר החולים או הנקודות באשכול שנוצר.
מיקום GIS של "נקודת ייחוס"קואורדינטות קו הרוחב-אורך של נקודת התייחסות, שיכולה להיות בית חולים או מתקן טיפול ראשוני, למשל.
רדיוס אשכול מרביהמרחק בין הנקודה החיצונית ביותר באשכול למרכז האשכול.
"זווית" מנקודת ההתייחסותזווית האשכול נמדדת נגד כיוון השעון ממזרח לנקודת ההתייחסות כאפס מעלות, תוך שימוש במוסכמות מעגל יחידה.
מרחק מנקודת הייחוסהמרחק בין נקודת המרכז של האשכול לנקודת ההתייחסות.
מספר הימים שהאשכול צריך להתפרשמספר הימים מרגע שהאדם הראשון מראה סימפטומים ועד לאדם האחרון.
אלגוריתם תאריךזה מציין באיזה מבין שלושת המודלים של התקדמות זמנית להשתמש. ניתן לשלב בתוכנה דגמים נוספים.
תיאור ושמות קבצי פלטהמשתמש יכול לציין היכן ייכתבו נתוני האשכול ותיאור האשכול שצוין על ידי המשתמש.

ה- AEGIS-CCT היא חבילת Java הכוללת מנוע גיאו-מרחבי וממשק משתמש שנוצר באמצעות ערכת הכלים של Swing. המקור לחבילה כולה מסופק תחת רישיון הציבורי של Lesser GNU [9] באתר פיתוח sourceforge.net [10]. ניתן לקבל פרטים מלאים ועדכונים ל- AEGIS-CCT באופן מקוון [11].

קידוד גיאוגרפי ודיוק המיקום

שיטות פרוגרמטיות יושמו להקצאת קואורדינטות קו אורך לרוחב לנקודות אשכול מדומות, תוך התחשבות במרחקים פנימיים של כדור הארץ ולא בהסתמכות על תוכנת GIS חיצונית. בתוך מחלקת GIS של AEGIS-CCT, ישנן שלוש שיטות עיקריות לטיפול בהמרות אלה. הראשון הוא שיטה לאיתור המרחק בין שני מיקומים, המשתמשת באורך הרוחב הספציפי של נקודת ההתייחסות ליצירת יחס של מעלות למטר לקו הרוחב צפון-דרום ואורך מזרח-מערב. נקודות נתונים מלאכותיות נוצרות 0.05 מעלות צפונה או מזרחית, והמרחקים הפיזיים המתאימים (x, y) מחושבים באמצעות נוסחת Haversine המתוארת להלן. היחס מחושב לאחר מכן ומחלק את מרחק נקודת הנתונים המלאכותית למרחק הפיזי המחושב במטר על פני כדור הארץ. שיטה שנייה מוצאת נקודה שהיא מרחק פיזי ספציפי, הנמדד בזווית מוגדרת, מנקודת התייחסות. הזווית נמדדת מציר ה- x אוקלידיאנוס וגדלה בצורה נגד כיוון השעון. הפלט הוא נקודת נתונים GIS שנייה הקשורה לנקודת ההתייחסות בזווית ובמרחק שצוין על ידי המשתמש. השיטה השלישית מוצאת את מספר דרגות הרוחב והאורך ליחידת מרחק פיזי לכל כיוון בהתאמה.

דיוק GIS

הצבת חולים על המפה דורשת התחשבות בעקמומיות כדור הארץ ובקו הרוחב והאורך המדויק. משוואות כדוריות מתפרקות באופן משמעותי במרחקים קטנים, אך נוסחת Haversine [12] מספקת תוצאות מדויקות חישוביות כמעט בכל הנסיבות. לחישוב זה, לכדור הארץ יש רדיוס R, ולמיקומים של שתי נקודות בקואורדינטות כדוריות (קו רוחב ואורך) יש שמות [lon1, lat1] ו- [lon2, lat2]. נוסחת Haversine מחושבת באמצעות הקוד הבא:

a = (sin (dlat/2)) ^2 + cos (lat1) * cos (lat2) * (sin (dlon/2)) ^2

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

התקדמות גיאוטמפורלית

ההתפרצויות משתנות בהתקדמותן הזמנית או בעקומות המגיפה. שלוש התקדמות כאלה יושמו ב- AEGIS-CCT כאלגוריתמי תאריך כדי לדגמן את הדרכים שבהן מחלה עשויה להתבטא באוכלוסייה לאורך זמן: התפשטות צמיחה אקראית, לינארית והתפשטות מעריכית. משתמשים אחרים יכולים להוסיף אלגוריתמי תאריך אפידמיולוגיים ל- AEGIS-CCT על ידי יישום שיטה להקצאת התפלגות זמנית ספציפית בתוך מערך ב- Java.

עבור האלגוריתם האקראי נוצר מספר אקראי שנמצא בטווח של מספר הימים באשכול, המייצר התפלגות אקראית. עבור ההתפלגות הלינארית, ערך היום מחולק לערכי היום הכולל ומוכפל במספר הנקודות הכולל כדי לקבוע את חלק מסך הנקודות שיש להזריק בכל יום. קנה מידה על ידי מכפיל יכול לשנות את קצב הצמיחה הלינארית. באופן דומה עבור ההתפלגות האקספוננציאלית, הערך המספרי של ה (מכפיל * מספר היום) מחולק בסכום של ה (מכפיל * מספר היום), לערכי כל היום. יחס זה מוכפל אז במספר הנקודות הכולל כדי לקבוע את מספר הנקודות המתרחשות בכל יום. דוגמאות לאומדני התפלגות ההסתברות הליניארית והאקספוננציאלית בהתפלגות התאריכים מוצגות באיורים ​ איורים 1 ו ​ ו -2 2.

דוגמה לאומדן האלגוריתם של תאריך ליניארי לשלושים נקודות המתפרשות על פני שלושה ימים. ציר ה- x מייצג את מספר היום.

דוגמה לאומדן אלגוריתם התאריך האקספוננציאלי לשלושים נקודות המתפרשות על פני שלושה ימים. ציר ה- x מייצג את מספר היום.


6.4 הגדרת תקשורת מולטי -שידור

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

תקשורת מולטי-שידור מוגדרת בקובץ דריסת תפעול בתוך הצומת & ltmulticast-listener & gt. מאפייני מערכת רבים זמינים גם להגדרת תקשורת מולטי -שידור בעת הפעלת חבר אשכול.

הנושאים הבאים כלולים בחלק זה:

6.4.1 ציון כתובת ריבוי שידור של אשכול

ניתן לציין כתובת מרובת שידור (כתובת IP ויציאה) עבור חבר אשכול. חברי אשכול חייבים להשתמש באותה כתובת ויציאה מרובת שידור כדי להצטרף לאשכול. אשכולות מובחנים באותה רשת חייבים להשתמש בכתובות שונות של שידור.

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

שימוש בברירת המחדל של כתובת ויציאת שידור (ושם האשכול שנוצר על ידי המערכת) מגדיל את הסיכוי שיהיו תצורות אשכול חופפות ברשת. זה יכול להוביל לכך שחברי אשכול יצטרפו בטעות לאשכול בלתי צפוי. השתמש תמיד בערך יציאה ייחודי ליצירת אשכול מובהק.

כדי לציין כתובת ריבוי אשכולות אשכולות, ערוך את קובץ השינוי המבצעי והוסף גם רכיב & ltaddress & gt וגם & ltport & gt וציין את הכתובת והיציאה שישמש את חבר האשכול. לדוגמה:

מאפייני המערכת tangosol.coherence.clusteraddress ו- tangosol.coherence.clusterport משמשים לציון כתובת multicast באשכול במקום להשתמש בקובץ ה- override המבצעי. לדוגמה:

6.4.1.1 שינוי ממשק Socket Multicast

שקע השידור הרב קשור לאותו ממשק רשת (NIC) כמו כתובת ה- IP של מאזין unicast. ניתן להגדיר רשת NIC שונה עבור שידור רב, אך למעט נדיר, הוא מתייאש מאוד מכיוון שהוא יכול להוביל לכישלון חלקי של האשכול.

עם שני רשתות NIC, הממשק (וכך הרשת) המשמש לתעבורה מרובת שידור שונה מהממשק (וכך הרשת) המשמש לתעבורת חד-קדימה (UDP/IP) ו- TCP-ring (TCP/IP). התקשורת בממשק אחד (או ברשת) ממשיכה להצליח גם אם הממשק השני נכשל תרחיש זה מאריך את גילוי הכשלים ואת כשלון. מכיוון שפרוטוקול האשכול מטפל בכשל חבר (ובכך ממשק), עדיף שכל התקשורת תיכשל כך שחבר שנכשל יזוהה ויוסר במהירות מהאשכול.

כדי לשנות את ממשק רשת ברירת המחדל לרשת השידור, ערוך את קובץ השינוי התפעולי והוסף רכיב & ltinterface & gt המציין את כתובת ה- IP שאליה נקשר שקע השידור הרב -שידורי. לדוגמה:

6.4.2 השבתת תקשורת מולטי -שידור

תעבורה מרובת שידור עשויה להיות לא רצויה או שהיא עשויה להיות אסורה בסביבות רשת מסוימות. במקרה זה, השתמש בתכונה 'כתובות ידועות' כדי למנוע מ- Coherence להשתמש ברב -שידור. זה משבית גילוי multicast וגם משבית multicast עבור כל העברות הנתונים נעשה שימוש ב- unicast (נקודה לנקודה) במקום. קוהרנטיות נועדה להשתמש בתקשורת מנקודה לנקודה ככל האפשר, כך שרוב פרופילי היישומים אינם רואים השפעה מהותית על הביצועים. ראה "שימוש בכתובות ידועות".

השבתת multicast אכן מעמיסה יותר את הרשת. עם זאת, הדבר הופך לבעיה רק ​​עבור אשכולות גדולים עם יותר מ -100 חברים.

6.4.3 ציון זמן השידור לחיים

ההגדרה ערך זמן לחיות (TTL) מציינת עד לאן חבילות UDP/IP מרובות שידור יכולות לנסוע ברשת. ה- TTL מתבטא במונחים של כמה כשות שמנה שורדת כל ממשק רשת, נתב ומתג מנוהל נחשבת כקפיצה אחת.

יש להגדיר את ערך TTL לערך המספר השלם הנמוך ביותר שעובד. הגדרת הערך גבוה מדי יכולה להשתמש ברוחב פס מיותר בקטעי LAN אחרים ואף יכולה לגרום למערכת ההפעלה או להתקני הרשת להשבית תעבורה מרובת שידור. בדרך כלל, הגדרת ערך TTL ל- 1 פועלת על עמוד שדרה פשוט. ערך של 2 או יותר עשוי להידרש על עמוד שדרה מתקדם עם מיתוג חכם. ערך 0 משמש לאשכולות שרתים בודדים המשמשים לפיתוח ובדיקות. ראה "הפעלת מצב שרת יחיד" למידע נוסף על אשכולות שרתים בודדים.

כדי לציין את TTL, ערוך את קובץ השינוי המבצעי והוסף רכיב & lttime-to-live & gt הכולל את ערך TTL. לדוגמה:

מאפיין המערכת tangosol.coherence.ttl משמש לציון ערך TTL במקום להשתמש בקובץ הבקרה המבצעית. לדוגמה:

6.4.4 ציון פסק הזמן להצטרפות מרובת שידור

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

החבר הראשון באשכול ממתין למשך כל הזמן של פסק הזמן להצטרפות לפני שהוא לוקח על עצמו את תפקיד החבר הבכיר. אם פסק זמן ההפעלה של האשכול קטן מפסק הזמן להצטרפות, אז החבר הראשון באשכול נכשל במהלך הפעלת האשכול. הזמן הקצוב לחבר האשכול מצוין באמצעות הזמן הקצוב למפרסם של מנות החבילות (& lttimeout-milliseconds & gt). ראה "משלוח מנות".

כדי לציין את הזמן הקצוב להצטרפות, ערוך את קובץ השינוי המבצעי והוסף רכיב & ltjoin-timeout-milliseconds & gt הכולל את ערך הזמן הקצוב. לדוגמה:

6.4.5 שינוי סף ריבוי השידור

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

סף השידור מרובה הוא ערך באחוזים והוא נע בין 1% ל -100%. באשכול של n חברים, חבר אשכול ששולח מנה לחבילה של צמתים של יעד (לא סופר את עצמו) בגודל d (בטווח של 0 עד n -1) שולח מנה באמצעות שידור רב שידור רק אם ההחזקה הבאה נָכוֹן:

המנה נשלחת דרך הרשת לצמתים מרובים (d & gt 1).

מספר הצמתים גדול מהסף שצוין (d & gt (n - 1) * (סף /100)).

לדוגמה, באשכול של 25 חברים עם סף ריבוי שידור של 25%, חבר אשכול משתמש ברב שידור בלבד אם המנה מיועדת ל -6 חברים או יותר (24 * .25 = 6).

הגדרת ערך זה ל -1 מאפשרת לאשכול להשתמש ברב שידור עבור כמעט כל התעבורה מרובת הנקודות. הגדרת ערך זה ל -100 מאלצת את האשכול להשתמש ב- Unicast עבור כל התעבורה מרובת הנקודות למעט תעבורת שידור מפורשת (למשל פעימות לב וגילוי אשכולות) מכיוון שמעולם לא חרגו מסף 100%. עם ההגדרה 25 (ברירת המחדל) חבר אשכול שולח את המנה באמצעות unicast אם היא מיועדת לפחות מרבע מכל הצמתים, ושולחת את המנה באמצעות multicast אם היא מיועדת לרבע או יותר מכל הצמתים .

כדי לציין את סף השידור הרב-ערכי, ערוך את קובץ השינוי המבצעי והוסף רכיב & ltmulticast-threshold-percent & gt הכולל את ערך הסף. לדוגמה:


פילוח אזורי השלטון המקומי: יצירת גיאוגרפיה חדשה של ניגריה

סיווגי אזורים חברתיים מקבצים אזורים על בסיס דמיון חברתי או חברתי-כלכלי ליחידות אשכולות המגדירות את המאפיינים הדמוגרפיים והחברתיים שלהן. השיטות המשמשות ליצירת מערכות אלה משלבות מחשבה ותיאוריה גיאוגרפית עם מניפולציות סטטיסטיות של נתונים רב משתנים. נראה כי פיתוח ושימוש במערכות גיאודמוגרפיות מוגבלות במדינות מתפתחות. חלק מהפרשנים מציעים כי סיווגי אזורים עשויים שלא להציע הטבות למדינות אלה. מאמר זה טוען כי לעולם המתפתח יש הרבה תועלת מגיאוגרפיה מסוג זה. הוא מציג את מקרה ניגריה שבו פותחה מערכת סיווג עבור 774 אזורי השלטון המקומי (LGA) במדינה. ניתנת תובנה לגבי המשתנים והגישה המתודולוגית ששימשה ליצירת המערכת הניגרית.

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


יציאות

מספר תפוקות נוצרות על ידי הכלי לניתוח קיבוץ. לכל אלה (כולל קובץ דוח ה- PDF האופציונלי) ניתן לגשת מחלון התוצאות. אם תשבית את עיבוד הרקע, התוצאות ייכתבו גם לתיבת הדו -שיח התקדמות. הודעות אלה (המוצגות להלן) מסכמות מידע המוצג בדוח ה- PDF האופציונלי (המתואר להלן).

פלט ברירת המחדל של כלי ניתוח הקיבוץ הוא מחלקת תכונות פלט חדשה המכילה את השדות המשמשים בניתוח בתוספת שדה שלם חדש בשם SS_GROUP המזהה לאיזו קבוצה כל תכונה שייכת. מחלקה זו של תכונת פלט מתווספת לתוכן העניינים עם ערכת עיבוד צבע ייחודית החלה על שדה SS_GROUP. עיבוד חלול מציין תכונות שלא ניתן היה להוסיף לאף קבוצה, בדרך כלל מכיוון שאין להן תכונות שכנות. אם תציין NO_SPATIAL_CONSTRAINT עבור הפרמטר מרחבי האילוצים, שדה נוסף, SS_SEED, יתווסף למחלקת תכונות הפלט כדי לציין אילו תכונות זרע שימשו לגידול קבוצות.

קיבוץ עם אילוצים מרחביים ברציפות

קיבוץ דוח ניתוח ניתוח

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

יצירת קובץ הדוח האופציונלי יכולה להוסיף זמן עיבוד משמעותי. כתוצאה מכך, בעוד ניתוח קיבוץ תמיד ייצור מחלקת תכונות פלט המציגה חברות בקבוצה, קובץ דוח ה- PDF לא ייווצר אם תציין יותר מ -15 קבוצות או יותר מ -15 משתנים.

לצלול פנימה:

הטווח הבין -רבעוני (IQR) הוא הרבעון העליון פחות הרביע התחתון. חריגים נמוכים יהיו ערכים הנמוכים מ -1.5*IQR (Q1-1.5*IQR), וחריגים גבוהים יהיו ערכים הגדולים מ- 1.5*IQR (Q3+1.5*IQR). חריגים מופיעים בחלקות התיבה כסמלים +.

העמוד הראשון של הדוח משווה את המשתנים (שדות הניתוח) בתוך כל קבוצה זה לזה. בדוח שלהלן, למשל, בוצע ניתוח קיבוץ במסגרות מפקד כדי ליצור ארבע קבוצות. הנתונים הסטטיסטיים של כל קבוצה מודפסים בצבע אחר (כחול, אדום, ירוק וזהב). הסט הראשון של סטטיסטיקות סיכום מודפס בשחור כיוון שמדובר בערכי הממוצע העולמי, סטיית התקן (סטד.), מינימום, מקסימום ו- R 2 לכל הנתונים בכל שדה ניתוח. ככל שערך R 2 גדול יותר עבור משתנה מסוים, כך משתנה זה יכול להבחין בין התכונות שלך. לאחר הסיכומים הגלובליים, הערכים ממוצע, סטיית תקן, מינימום, מקסימום ושיתוף מדווחים על כל משתנה בכל קבוצה. בדוח שלהלן, למשל, אתה רואה שקבוצה 1 (כחול) מכילה 52 אחוזים מטווח הערכים במשתנה AGE_UNDER5 העולמי טווח הערכים הגלובלי הוא בין 0 ל -1,453 ילדים מתחת לגיל 5, והקבוצה הכחולה מכיל מסלולים עם בין 488 ל -1,246 ילדים מתחת לגיל 5. המספר הממוצע של ילדים מתחת לגיל 5 במסכתים בקבוצה הכחולה הוא 805.3750. חלקת התיבה מימין לסיכום הסטטיסטי של הקבוצה הכחולה מראה כיצד ערכי הקבוצה מתייחסים לערכים הגלובליים של אותו שדה ניתוח. שים לב שהנקודה הכחולה בחלקת הקופסה נופלת מחוץ לרביעון העליון וכי הקו האנכי הכחול הראשון (המייצג את הערך המינימלי עבור שטחי הקבוצה הכחולה) נמצא מעל הממוצע הגלובלי לשדה זה. למעשה, אם מסתכלים היכן הנקודות הכחולות נופלות בחלקות התיבה של כל המשתנים, אפשר לראות שמלבד המשתנה MEDIANRENT הערכים הממוצעים בכל שדות הניתוח נמצאים מעל הרביעון העליון. לקבוצה זו טווח הערכים הגבוה ביותר בהשוואה לקבוצות האחרות.

לצלול פנימה:

ערך המניה הוא היחס בין הקבוצה לטווח הגלובלי. עבור קבוצה 1 והמשתנה AGE_UNDER5, למשל, נתח הנתח של 52 אחוזים מתקבל על ידי חלוקת טווח הקבוצה (1246-488 = 758) בטווח הגלובלי (1453-0 = 1453), ומניב 0.52 כאשר מעוגל לשתי ספרות משמעותיות.

סעיף 1 לדוח הפלט

החלק השני של הדוח משווה את טווחי המשתנים עבור כל קבוצה, שדה ניתוח אחד (משתנה) בכל פעם. עם תצוגה זו של הנתונים, קל לראות לאיזו קבוצה יש את טווח הערכים הגבוה והנמוך ביותר בתוך כל משתנה. ערכי המינימום, הממוצע והמקסימום של הקבוצה מונחים על גבי החלקה המשקפת את כל הערכים. שימו לב שלקבוצה 4 (כתומה) יש את הערכים הנמוכים ביותר עבור המשתנה MEDIANRENT. הערכים המינימליים, הממוצע והמקסימום עבור קבוצה זו נמוכים יותר מכל קבוצה אחרת.

סעיף 2 לדוח הפלט

גרף עלילת התיבה המקבילה מסכם את הקבוצות ואת המשתנים בתוכם. מהגרף שלהלן, שים לב שקבוצה 1 (כחולה) משקפת מסלולים עם שכר דירה ממוצע, הערכים הגבוהים ביותר למשקי בית עם נשים (FHH_CHILD), הערכים הגבוהים ביותר למספר יחידות דיור (HSE_UNITS) והערכים הגבוהים ביותר לילדים מתחת לגיל 5. קבוצה 2 (אדומה) משקפת שטחים עם שכר הדירה החציוני הגבוה ביותר, המספר הנמוך ביותר של משקי בית בראשות נשים עם ילדים, יותר ממספר יחידות הדיור הממוצע (אם כי פחות מהשטחים בקבוצות 1 או 3), והילדים המעטים מתחת לגיל 5.

עלילת תיבה מקבילה בדוח הפלט

כאשר אתה בודק את הפרמטר 'הערך מספר אופטימלי של קבוצות', קובץ דוח PDF יכלול גרף של ערכי F-statistik פסאודו. הנקודה המעגלת בגרף היא נתון ה- F הגדול ביותר, המציין כמה קבוצות יהיו היעילות ביותר להבחין בין התכונות והמשתנים שציינת. בגרף שלהלן, נתון ה- F הקשור לארבע קבוצות הוא הגבוה ביותר. חמש קבוצות, בעלות נתוני F פסאודו גבוהים, יהיו גם הן בחירה טובה.

עלילה סטטיסטית Fseudo F בדוח הפלט


אחריות ציבורית-פרטית חדשה

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

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

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

מקבץ הוא ביטוי של היהלום בעבודה. קרבה - שיתוף חברות, לקוחות וספקים - מעצימה את כל הלחצים לחדש ולשדרג.

2. מחקרי מקרה שנבחרו מתוארים בספר "אשכולות ותחרות" על תחרות (בוסטון: Harvard Business School Press, 1998), הכוללת גם ציטוטים של הפלט המתפרסם של מספר יוזמות אשכולות. הקוראים יכולים גם למצוא טיפול מלא בשורשים האינטלקטואליים של חשיבה מצרר, יחד עם ביבליוגרפיה נרחבת.


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

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

טבלה מתארת ​​ישות, שהיא בעלת משמעות לגביה יש לרשום מידע. לדוגמה, עובד יכול להיות ישות.

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

לטבלאות יחסיות יש עמודות פשוטות והן סוג השולחן הנפוץ ביותר. דוגמה 2-1 מציגה משפט CREATE TABLE עבור טבלה יחסית.

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

אתה יכול ליצור טבלה יחסית עם המאפיינים הארגוניים הבאים:

טבלה מאורגנת בערימה אינה מאחסנת שורות בסדר מסוים. המשפט CREATE TABLE יוצר טבלה מאורגנת כערימה כברירת מחדל.

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

טבלה חיצונית היא טבלה לקריאה בלבד שמטא הנתונים שלה מאוחסנים במסד הנתונים אך הנתונים שלה מאוחסנים מחוץ למסד הנתונים. ראה "סקירה כללית של טבלאות חיצוניות".

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

נושא זה מכיל את הנושאים הבאים:

עמודות

הגדרת טבלה כוללת שם טבלה וערכת עמודות.

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

באופן כללי, אתה נותן לכל עמודה שם עמודה, סוג נתונים ורוחב בעת יצירת טבלה. לדוגמה, סוג הנתונים של עובד_זהות הוא NUMBER (6), המציין כי עמודה זו יכולה להכיל רק נתונים מספריים ברוחב של עד 6 ספרות. ניתן לקבוע מראש את הרוחב לפי סוג הנתונים, כמו ב- DATE.

עמודות וירטואליות

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

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

עמודות בלתי נראות

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

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

The following example creates a table products with an invisible column count , and then makes the invisible column visible:

Oracle Database SQL Language Reference for more information about invisible columns

A row is a collection of column information corresponding to a record in a table.

For example, a row in the employees table describes the attributes of a specific employee: employee ID, last name, first name, and so on. After you create a table, you can insert, query, delete, and update rows using SQL.

Example: CREATE TABLE and ALTER TABLE Statements

The Oracle SQL statement to create a table is CREATE TABLE .

Example 2-1 CREATE TABLE employees

The following example shows the CREATE TABLE statement for the employees table in the hr sample schema. The statement specifies columns such as employee_id , first_name , and so on, specifying a data type such as NUMBER or DATE for each column.

Example 2-2 ALTER TABLE employees

The following example shows an ALTER TABLE statement that adds integrity constraints to the employees table. Integrity constraints enforce business rules and prevent the entry of invalid information into tables.

Example 2-3 Rows in the employees Table

The following sample output shows 8 rows and 6 columns of the hr.employees table.

The preceding output illustrates some of the following important characteristics of tables, columns, and rows:

A row of the table describes the attributes of one employee: name, salary, department, and so on. For example, the first row in the output shows the record for the employee named Steven King.

A column describes an attribute of the employee. In the example, the employee_id column is the primary key , which means that every employee is uniquely identified by employee ID. Any two employees are guaranteed not to have the same employee ID.

A non-key column can contain rows with identical values. In the example, the salary value for employees 101 and 102 is the same: 17000 .

A foreign key column refers to a primary or unique key in the same table or a different table. In this example, the value of 90 in department_id corresponds to the department_id column of the departments table.

A field is the intersection of a row and column. It can contain only one value. For example, the field for the department ID of employee 103 contains the value 60 .

A field can lack a value. In this case, the field is said to contain a null value. The value of the commission_pct column for employee 100 is null, whereas the value in the field for employee 149 is .2 . A column allows nulls unless a NOT NULL or primary key integrity constraint has been defined on this column, in which case no row can be inserted without a value for this column.

Oracle Database SQL Language Reference for CREATE TABLE syntax and semantics

Oracle Data Types

Each column has a data type , which is associated with a specific storage format, constraints, and valid range of values. The data type of a value associates a fixed set of properties with the value.

These properties cause Oracle Database to treat values of one data type differently from values of another. For example, you can multiply values of the NUMBER data type, but not values of the RAW data type.

When you create a table, you must specify a data type for each of its columns. Each value subsequently inserted in a column assumes the column data type.

Oracle Database provides several built-in data types. The most commonly used data types fall into the following categories:

Other important categories of built-in types include raw, large objects (LOBs), and collections. PL/SQL has data types for constants and variables, which include BOOLEAN , reference types, composite types (records), and user-defined types.

Oracle Database SQL Language Reference to learn about built-in SQL data types

Oracle Database Development Guide to learn how to use the built-in data types

Character Data Types

Character data types store alphanumeric data in strings. The most common character data type is VARCHAR2 , which is the most efficient option for storing character data.

The byte values correspond to the character encoding scheme, generally called a character set . The database character set is established at database creation. Examples of character sets are 7-bit ASCII, EBCDIC, and Unicode UTF-8.

The length semantics of character data types are measurable in bytes or characters. The treatment of strings as a sequence of bytes is called byte semantics . This is the default for character data types. The treatment of strings as a sequence of characters is called character semantics . A character is a code point of the database character set.

VARCHAR2 and CHAR Data Types

For example, 'LILA' , 'St. George Island' , and '101' are all character literals 5001 is a numeric literal. Character literals are enclosed in single quotation marks so that the database can distinguish them from schema object names.

This manual uses the terms text literal , character literal , and string interchangeably.

When you create a table with a VARCHAR2 column, you specify a maximum string length. In Example 2-1, the last_name column has a data type of VARCHAR2(25) , which means that any name stored in the column has a maximum of 25 bytes.

For each row, Oracle Database stores each value in the column as a variable-length field unless a value exceeds the maximum length, in which case the database returns an error. For example, in a single-byte character set, if you enter 10 characters for the last_name column value in a row, then the column in the row piece stores only 10 characters (10 bytes), not 25. Using VARCHAR2 reduces space consumption.

In contrast to VARCHAR2 , CHAR stores fixed-length character strings. When you create a table with a CHAR column, the column requires a string length. The default is 1 byte. The database uses blanks to pad the value to the specified length.

Oracle Database compares VARCHAR2 values using nonpadded comparison semantics and compares CHAR values using blank-padded comparison semantics.

Oracle Database SQL Language Reference for details about blank-padded and nonpadded comparison semantics

NCHAR and NVARCHAR2 Data Types

Unicode is a universal encoded character set that can store information in any language using a single character set. NCHAR stores fixed-length character strings that correspond to the national character set, whereas NVARCHAR2 stores variable length character strings.

You specify a national character set when creating a database. The character set of NCHAR and NVARCHAR2 data types must be either AL16UTF16 or UTF8 . Both character sets use Unicode encoding.

When you create a table with an NCHAR or NVARCHAR2 column, the maximum size is always in character length semantics. Character length semantics is the default and only length semantics for NCHAR or NVARCHAR2 .

Oracle Database Globalization Support Guide for information about Oracle's globalization support feature

Numeric Data Types

The Oracle Database numeric data types store fixed and floating-point numbers, zero, and infinity. Some numeric types also store values that are the undefined result of an operation, which is known as "not a number" or NaN .

Oracle Database stores numeric data in variable-length format. Each value is stored in scientific notation, with 1 byte used to store the exponent. The database uses up to 20 bytes to store the mantissa , which is the part of a floating-point number that contains its significant digits. Oracle Database does not store leading and trailing zeros.

NUMBER Data Type

The NUMBER data type stores fixed and floating-point numbers. The database can store numbers of virtually any magnitude. This data is guaranteed to be portable among different operating systems running Oracle Database. The NUMBER data type is recommended for most cases in which you must store numeric data.

You specify a fixed-point number in the form NUMBER ( p , s ) , where p and s refer to the following characteristics:

The precision specifies the total number of digits. If a precision is not specified, then the column stores the values exactly as provided by the application without any rounding.

The scale specifies the number of digits from the decimal point to the least significant digit. Positive scale counts digits to the right of the decimal point up to and including the least significant digit. Negative scale counts digits to the left of the decimal point up to but not including the least significant digit. If you specify a precision without a scale, as in NUMBER(6) , then the scale is 0.

In Example 2-1, the salary column is type NUMBER(8,2) , so the precision is 8 and the scale is 2. Thus, the database stores a salary of 100,000 as 100000.00 .

Floating-Point Numbers

Oracle Database provides two numeric data types exclusively for floating-point numbers: BINARY_FLOAT and BINARY_DOUBLE .

These types support all of the basic functionality provided by the NUMBER data type. However, whereas NUMBER uses decimal precision, BINARY_FLOAT and BINARY_DOUBLE use binary precision, which enables faster arithmetic calculations and usually reduces storage requirements.

BINARY_FLOAT and BINARY_DOUBLE are approximate numeric data types. They store approximate representations of decimal values, rather than exact representations. For example, the value 0.1 cannot be exactly represented by either BINARY_DOUBLE or BINARY_FLOAT . They are frequently used for scientific computations. Their behavior is similar to the data types FLOAT and DOUBLE in Java and XMLSchema.

Oracle Database SQL Language Reference to learn about precision, scale, and other characteristics of numeric types

Datetime Data Types

The datetime data types are DATE and TIMESTAMP . Oracle Database provides comprehensive time zone support for time stamps.

DATE Data Type

The DATE data type stores date and time. Although datetimes can be represented in character or number data types, DATE has special associated properties.

The database stores dates internally as numbers. Dates are stored in fixed-length fields of 7 bytes each, corresponding to century, year, month, day, hour, minute, and second.

Dates fully support arithmetic operations, so you add to and subtract from dates just as you can with numbers. See Oracle Database Development Guide .

The database displays dates according to the specified format model . A format model is a character literal that describes the format of a datetime in a character string. The standard date format is DD-MON-RR , which displays dates in the form 01-JAN-11 .

RR is similar to YY (the last two digits of the year), but the century of the return value varies according to the specified two-digit year and the last two digits of the current year. Assume that in 1999 the database displays 01-JAN-11 . If the date format uses RR , then 11 specifies 2011 , whereas if the format uses YY , then 11 specifies 1911 . You can change the default date format at both the database instance and session level.

Oracle Database stores time in 24-hour format&mdash HH:MI:SS . If no time portion is entered, then by default the time in a date field is 00:00:00 A.M . In a time-only entry, the date portion defaults to the first day of the current month.

Oracle Database Development Guide for more information about centuries and date format masks

Oracle Database SQL Language Reference for information about datetime format codes

TIMESTAMP Data Type

The TIMESTAMP data type is an extension of the DATE data type.

TIMESTAMP stores fractional seconds in addition to the information stored in the DATE data type. The TIMESTAMP data type is useful for storing precise time values, such as in applications that must track event order.

The DATETIME data types TIMESTAMP WITH TIME ZONE and TIMESTAMP WITH LOCAL TIME ZONE are time-zone aware. When a user selects the data, the value is adjusted to the time zone of the user session. This data type is useful for collecting and evaluating date information across geographic regions.

Oracle Database SQL Language Reference for details about the syntax of creating and entering data in time stamp columns

Rowid Data Types

Every row stored in the database has an address. Oracle Database uses a ROWID data type to store the address (rowid) of every row in the database.

Rowids fall into the following categories:

Physical rowids store the addresses of rows in heap-organized tables, table clusters, and table and index partitions.

Logical rowids store the addresses of rows in index-organized tables.

Foreign rowids are identifiers in foreign tables, such as DB2 tables accessed through a gateway. They are not standard Oracle Database rowids.

A data type called the universal rowid , or urowid, supports all types of rowids.

Use of Rowids

A B-tree index , which is the most common type, contains an ordered list of keys divided into ranges. Each key is associated with a rowid that points to the associated row's address for fast access.

End users and application developers can also use rowids for several important functions:

Rowids are the fastest means of accessing particular rows.

Rowids provide the ability to see how a table is organized.

Rowids are unique identifiers for rows in a given table.

You can also create tables with columns defined using the ROWID data type. For example, you can define an exception table with a column of data type ROWID to store the rowids of rows that violate integrity constraints. Columns defined using the ROWID data type behave like other table columns: values can be updated, and so on.

ROWID Pseudocolumn

Every table in an Oracle database has a pseudocolumn named ROWID .

A pseudocolumn behaves like a table column, but is not actually stored in the table. You can select from pseudocolumns, but you cannot insert, update, or delete their values. A pseudocolumn is also similar to a SQL function without arguments. Functions without arguments typically return the same value for every row in the result set, whereas pseudocolumns typically return a different value for each row.

Values of the ROWID pseudocolumn are strings representing the address of each row. These strings have the data type ROWID . This pseudocolumn is not evident when listing the structure of a table by executing SELECT or DESCRIBE , nor does the pseudocolumn consume space. However, the rowid of each row can be retrieved with a SQL query using the reserved word ROWID as a column name.

The following example queries the ROWID pseudocolumn to show the rowid of the row in the employees table for employee 100:

Oracle Database Development Guide to learn how to identify rows by address

Format Models and Data Types

A format model is a character literal that describes the format of datetime or numeric data stored in a character string. A format model does not change the internal representation of the value in the database.

When you convert a character string into a date or number, a format model determines how the database interprets the string. In SQL, you can use a format model as an argument of the TO_CHAR and TO_DATE functions to format a value to be returned from the database or to format a value to be stored in the database.

The following statement selects the salaries of the employees in Department 80 and uses the TO_CHAR function to convert these salaries into character values with the format specified by the number format model '$99,990.99' :

The following example updates a hire date using the TO_DATE function with the format mask 'YYYY MM DD' to convert the string '1998 05 20' to a DATE value:

Integrity Constraints

An integrity constraint is a named rule that restrict the values for one or more columns in a table. These rules prevent invalid data entry into tables. Also, constraints can prevent the deletion of a table when certain dependencies exist.

If a constraint is enabled, then the database checks data as it is entered or updated. Oracle Database prevents data that does not conform to the constraint from being entered. If a constraint is disabled, then Oracle Database allows data that does not conform to the constraint to enter the database.

In Example 2-1, the CREATE TABLE statement specifies NOT NULL constraints for the last_name , email , hire_date , and job_id columns. The constraint clauses identify the columns and the conditions of the constraint. These constraints ensure that the specified columns contain no null values. For example, an attempt to insert a new employee without a job ID generates an error.

You can create a constraint when or after you create a table. You can temporarily disable constraints if needed. The database stores constraints in the data dictionary .

Data Integrity to learn about integrity constraints

Overview of the Data Dictionary to learn about the data dictionary

Oracle Database SQL Language Reference to learn about SQL constraint clauses

Table Storage

Oracle Database uses a data segment in a tablespace to hold table data.

A segment contains extents made up of data blocks. The data segment for a table (or cluster data segment, for a table cluster ) is located in either the default tablespace of the table owner or in a tablespace named in the CREATE TABLE statement.

Table Organization

By default, a table is organized as a heap, which means that the database places rows where they fit best rather than in a user-specified order. Thus, a heap-organized table is an unordered collection of rows.

Index-organized tables use a different principle of organization.

As users add rows, the database places the rows in the first available free space in the data segment. Rows are not guaranteed to be retrieved in the order in which they were inserted.

The hr.departments table is a heap-organized table. It has columns for department ID, name, manager ID, and location ID. As rows are inserted, the database stores them wherever they fit. A data block in the table segment might contain the unordered rows shown in the following example:

The column order is the same for all rows in a table. The database usually stores columns in the order in which they were listed in the CREATE TABLE statement, but this order is not guaranteed. For example, if a table has a column of type LONG , then Oracle Database always stores this column last in the row. Also, if you add a new column to a table, then the new column becomes the last column stored.

A table can contain a virtual column , which unlike normal columns does not consume space on disk. The database derives the values in a virtual column on demand by computing a set of user-specified expressions or functions. You can index virtual columns, collect statistics on them, and create integrity constraints. Thus, virtual columns are much like nonvirtual columns.

Row Storage

The database stores rows in data blocks. Each row of a table containing data for less than 256 columns is contained in one or more row pieces.

If possible, Oracle Database stores each row as one row piece . However, if all of the row data cannot be inserted into a single data block, or if an update to an existing row causes the row to outgrow its data block, then the database stores the row using multiple row pieces (see "Data Block Format" ).

Rows in a table cluster contain the same information as rows in nonclustered tables. Additionally, rows in a table cluster contain information that references the cluster key to which they belong.

Rowids of Row Pieces

Every row in a heap-organized table has a rowid unique to this table that corresponds to the physical address of a row piece. For table clusters, rows in different tables that are in the same data block can have the same rowid.

Oracle Database uses rowids internally for the construction of indexes. For example, each key in a B-tree index is associated with a rowid that points to the address of the associated row for fast access (see "Overview of B-Tree Indexes" ). Physical rowids provide the fastest possible access to a table row, enabling the database to retrieve a row in as little as a single I/O.

Storage of Null Values

A null is the absence of a value in a column. Nulls indicate missing, unknown, or inapplicable data.

Nulls are stored in the database if they fall between columns with data values. In these cases, they require 1 byte to store the length of the column (zero). Trailing nulls in a row require no storage because a new row header signals that the remaining columns in the previous row are null. For example, if the last three columns of a table are null, then no data is stored for these columns.

Table Compression

The database can use table compression to reduce the amount of storage required for the table.

Compression saves disk space, reduces memory use in the database buffer cache, and in some cases speeds query execution. Table compression is transparent to database applications.

Basic Table Compression and Advanced Row Compression

Dictionary-based table compression provides good compression ratios for heap-organized tables.

Oracle Database supports the following types of dictionary-based table compression:

This type of compression is intended for bulk load operations. The database does not compress data modified using conventional DML. You must use direct path INSERT operations, ALTER TABLE . . . MOVE operations, or online table redefinition to achieve basic table compression.

This type of compression is intended for OLTP applications and compresses data manipulated by any SQL operation. The database achieves a competitive compression ratio while enabling the application to perform DML in approximately the same amount of time as DML on an uncompressed table.

For the preceding types of compression, the database stores compressed rows in row major format . All columns of one row are stored together, followed by all columns of the next row, and so on (see "Row Format" ). The database replaces duplicate values with a short reference to a symbol table stored at the beginning of the block. Thus, information that the database needs to re-create the uncompressed data is stored in the data block itself.

Compressed data blocks look much like normal data blocks. Most database features and functions that work on regular data blocks also work on compressed blocks.

You can declare compression at the tablespace, table, partition, or subpartition level. If specified at the tablespace level, then all tables created in the tablespace are compressed by default.

Example 2-4 Table-Level Compression

The following statement applies advanced row compression to the orders table:

Example 2-5 Partition-Level Compression

The following example of a partial CREATE TABLE statement specifies advanced row compression for one partition and basic table compression for the other partition:

"Data Block Compression" to learn about the format of compressed data blocks

"SQL*Loader" to learn about using SQL*Loader for direct path loads

Hybrid Columnar Compression

With Hybrid Columnar Compression, the database stores the same column for a group of rows together. The data block does not store data in row-major format, but uses a combination of both row and columnar methods.

Storing column data together, with the same data type and similar characteristics, dramatically increases the storage savings achieved from compression. The database compresses data manipulated by any SQL operation, although compression levels are higher for direct path loads. Database operations work transparently against compressed objects, so no application changes are required.

Hybrid Column Compression and In-Memory Column Store (IM column store) are closely related (see "In-Memory Column Store" ). The primary difference is that Hybrid Column Compression optimizes disk storage, whereas the IM column store optimizes memory storage.

Types of Hybrid Columnar Compression

If your underlying storage supports Hybrid Columnar Compression, then you can specify different types of compression, depending on your requirements.

The compression options are:

This type of compression is optimized to save storage space, and is intended for data warehouse applications.

Online archival compression

This type of compression is optimized for maximum compression levels, and is intended for historical data and data that does not change.

To achieve warehouse or online archival compression, you must use direct path loads, ALTER TABLE . . . MOVE operations, or online table redefinition.

Hybrid Columnar Compression is optimized for Data Warehousing and decision support applications on Oracle Exadata storage. Oracle Exadata maximizes the performance of queries on tables that are compressed using Hybrid Columnar Compression, taking advantage of the processing power, memory, and Infiniband network bandwidth that are integral to the Oracle Exadata storage server.

Other Oracle storage systems support Hybrid Columnar Compression, and deliver the same space savings as on Oracle Exadata storage, but do not deliver the same level of query performance. For these storage systems, Hybrid Columnar Compression is ideal for in-database archiving of older data that is infrequently accessed.

Compression Units

Hybrid Columnar Compression uses a logical construct called a compression unit to store a set of rows.

When you load data into a table, the database stores groups of rows in columnar format, with the values for each column stored and compressed together. After the database has compressed the column data for a set of rows, the database fits the data into the compression unit.

For example, you apply Hybrid Columnar Compression to a daily_sales table. At the end of every day, you populate the table with items and the number sold, with the item ID and date forming a composite primary key. Table 2-1 shows a subset of the rows in daily_sales .

Table 2-1 Sample Table daily_sales

Assume that the rows in Table 2-1 are stored in one compression unit. Hybrid Columnar Compression stores the values for each column together, and then uses multiple algorithms to compress each column. The database chooses the algorithms based on a variety of factors, including the data type of the column, the cardinality of the actual values in the column, and the compression level chosen by the user.

As shown in Figure 2-4, each compression unit can span multiple data blocks. The values for a particular column may or may not span multiple blocks.

Figure 2-4 Compression Unit

Hybrid Columnar Compression has implications for row locking (see "Row Locks (TX)" ). When an update occurs for a row in an uncompressed data block, only the updated row is locked. In contrast, the database must lock all rows in the compression unit if an update is made to any row in the unit. Updates to rows using Hybrid Columnar Compression cause rowids to change.

By default, when a table uses Hybrid Columnar Compression, DML locks larger blocks of data (compression units), which may reduce concurrency. To avoid this issue, you can choose to enable row-level locking for a table.

Oracle Database Licensing Information to learn about licensing requirements for Hybrid Columnar Compression

Oracle Database Administrator&rsquos Guide to learn how to use Hybrid Columnar Compression

Oracle Database SQL Language Reference for CREATE TABLE syntax and semantics


How we operate

Our Sprint Planning agenda includes the following capacity analysis

  • Calculate the working days in the Sprint Timebox (minus planning and review)
  • Annotate each Scrum Team Member on the Calendar unless absent
  • Each Scrum Team member has a theoretical 8 hours
  • Calculate the capacity of the team for the month in hours
  • Remove 20% of the capacity for standard industry productivity overhead

The remainder will give you a fairly accurate figure of total development time available to the Scrum team. Let's use a theoretical example.

  • Sprint is 10 days
  • 1 day is removed for Planning
  • 1 day is removed for Review, Retrospective and mandatory business employment meetings
  • 8 working days remain
  • Scrum Team is six strong and highly cross functional (no bottlenecks)
  • Team Member A is absent for 2 days
  • Team Member B is absent for 1 day
  • 6 Team Members x 8 days (48) - 3 days = 45 days of total development time
  • 360 hours minus 20% productivity overhead = 288 hours of development time in reality

We can then introduce the Product Owner and the User Stories to the capacity that we have available whilst always keeping 30% in reserve. We would in this instance commit to approximately 200 hours worth of user stories.

During each working day we maintain a close eye upon the Story estimates versus the actuals to ensure that what we committed to was accurate. If our capacity remains unused near the end of the Sprint we hold a quick Product Owner update to pull a sheaf of user stories from the Product Backlog to plan and start.


צפו בסרטון: CartoDB tutorial (אוֹקְטוֹבֶּר 2021).