מה שאפשר לעשות עם stored procedures

MindTheBird יצרו תחרות עבור Stored Procedures מעניינים. ופרסמו את שמות הזוכים בתחרות עם ה Stored Procedure שהם יצרו.

למי שאינו יודע, stored procedure היא שפה בתוך מסד נתונים המאפשרת ליצור פונקציות בתוך מסד הנתונים אשר רצות בצורה מהירה, וחוזרות עם תשובה של שאילתות, בד"כ ללא הידור השאילתות בעת הבקשה (בניגוד לבקשת SQL "רגילה") ולכן נחשבות למהירות ויעילות יותר מאשר קוד זהה ההרץ מחוץ למסד הנתונים.

הזוכים יצרו את ה SP הבאים:

ניתן למצוא את ה SP הזוכים בפוסט הבא של חדשות firebird.

20 מחשבות על “מה שאפשר לעשות עם stored procedures

  1. meir

    דווקא מבחינת SP הפיירבירד די דל קלוריות לטעמי, במיוחד בהשוואה ל-Postgresql. לדוגמא כל מה שהם כתבו שם עבור ה-xml, לעומת מה שמובנה ב-PG‎‏:
    http://developer.postgresql.org/pgdocs/postgres/functions-xml.html

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

  2. ik_5 מאת

    הבעיה של Pg היא אותה בעיה של ++C. מרוב טכנולוגיות אתה מאבד את הידיים והרגליים, ואז אתה מוצא את עצמך או לא משתמש ב98% מהפיטצ'רים או משתמש באיזה wrapper שעושה בשבילך את העבודה.

    ד"א נגיד ואתה כותב sp בפיתון, זה מחייב את כל מי שיגע בsp אח"כ לתחזק לדעת פיתון. אותו הדבר ל TCL ו פרל (נדמה לי שהיא תומכת בעוד כמה שפות).

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

  3. meir

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

    ראה לדוגמא את הקוד שמממש את ה-xml ב-sp או ה-escaping: כל כך מסורבל, לא קריא וקשה מאוד לתחזוקה. אם היה כתוב בפרל לדוגמא, היה הרבה יותר ברור.

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

  4. ik_5 מאת

    יש הרבה מחירים שאתה משלם על הדברים האלו. זה לא "מפעילים מה שצריכים" זה "משתמשים במה שצריכים". הכל שם כבר.

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

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

    עכשיו נשאל אותך שאלה כזו: האם מסד הנתונים צריך לתמוך בxml או בייבוא ויצוא של מידע לכל פורמט אפשרי ? לדעתי האישית לא מסיבה פשוטה שאי אפשר לצאת מזה. נגיד ואתה רוצה פורמט מיוחד של XML אתה צריך משהו שיטפל בזה. אתה צריך משהו שיטפל בכל מקרי ה CSV (ובPg זה מסובך הרבה יותר עם כל הירושות של הטבלאות וכו') ואתה ממשיך להסתבך מכאן והלאה.

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

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

  5. meir

    לא, כדאי שתכיר: זה מפעילים מה שצריך. אפילו pl/pgsql לא מאופשר בברירת מחדל בבסיסי הנתונים, וכך גם השפות האחרות. אתה חייב לאפשר אותם ספציפית (בעזרת createlang)‏:
    http://www.postgresql.org/docs/8.1/interactive/app-createlang.html

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

    גם הטענה של "כל העולם ואישתו" בבסיס הנתונים לא נכונה (כפי שהראתי בהתחלה). כמו כן כדי לתמוך בתכונות ה-xml אתה צריך לבנות אותו עם כאלה (‎–with-libxml) לדוגמא, כך גם שאר תכונות.

    לגבי טיפוסים עשירים, טוב שיש כאלה, במקום כל ההאקים שראיתי לטיפול בכתובות ip לדוגמא (עם יכולות select וכד'). בקטע הזה firebird לוקה בחסר.

    ולסיום, בתור אחד שתחזק מספיק SP בפיירבירד ועבד עם ה-UDF השונים שלו שבלעדיהם אי אפשר לעשות שום דבר נורמלי ב-SP ומותקנים מיד (rfunc לדוגמא), כמו גם ב-SP בבסיסי נתונים אחרים: אל תעשו את זה. זה גועל נפש, קשה מאוד לתחזוקה, לשמירה בניהול גרסאות, לעדכון (במיוחד כשיש התקנות מרובות) וכד'.

    שמרו את הלוגיקה במקום המתאים לה.

  6. ik_5 מאת

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

    כן SP זה דבר מגעיל (אין לנו וויכוח על זה), אבל לך תתחזק עכשיו SP שכתוב ב C והשני כתוב ב TCL והרביעי כתוב לך ב brainfuck …

    בשביל לשמור IPv4 אתה יכול להשתמש במספר שלם 32 ביט (בד"כ משתמשים אבל המחרוזת ושומרים את הסגמנטים).
    האם זה שיש לך שדה מיוחד ל IP ואתה מחפש נגיד
    where IPAddress=10.0.0.115
    באמת עושה לך חיים קלים ?
    כי בד"כ אני מכיר כאלו שמשתמשים במשהו כמו HostName שיכול להכיל שם או מספר IP. ואז שדה מסוג מחרוזת פותר לך את הבעיה. אם אתה חייב מספר IP ומחר יבקשו ממך לשמור IPv6 האם תוכל להתמודד עם זה ?

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

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

  7. meir

    וזה בדיוק ההדגמה החיה למה שאני מתכוון בהאק. איך אתה מאמת שהכתובת חוקית ? מה עם שאילתה שתחזיר את כל הכתובות בטווח מסויים ? הרי זה דבר בסיסי בטיפול בכתובות, הנה עוד דוגמאות:
    http://www.postgresql.org/docs/8.3/static/functions-net.html

    ועכשיו אני צריך ליישם מעקפים כדי לטפל בטיפוס מידע נפוץ ? זה שייך לדומיין שמאחסן את המידע, לא ללוגיקה של יישום. על אותו היגיון למה לנו שדה date או time וכדו' ? מספיק להשתמש במספר שמאכסן unix timestamp וזהו ואז נמיר ברמת היישום את המספרים.

    לגבי ipv6, לא מבין מה הבעיה, PgSQL תומך בזה מהקופסה, ובאותו סוג שדה, אין צורך להפריד:
    http://www.postgresql.org/docs/7.4/interactive/datatype-net-types.html

    ואתה לא מבין איך stored procedures בדיוק נופלים בטענה שלך ? הרי תסתכל על שלושת הזוכים שהזכרת בפוסט: אלו דברים בסיסיים ביותר בתכנות, אם מישהו היה בא ואומר לך: "זכיתי בפרס על חילול xml משאילתה בפרל" היית מסתכל עליו בהשתאות ושואל: WTF ? לעומת זאת ברגע שזה ב-SP זה נחשב הישג (ב-pgsql זה גם דבר בסיסי)? פשוט עצוב.

  8. ik_5 מאת

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

    תמונה זה שימוש במידע מאוד נפוץ לא ? כלומר תמיכה ב JPEG ותמיכה ב PNG ושלא לדבר על Bitmap כללי יותר. אז למה לא לכלול אלמנטים כמו השוואה בין תוכן של תמונות ? כלומר האם יש אותו כמות צבעים, האם יש מידע דומה (צבעים, פרסימת הצבעים וכו') בין תמונות ששמורות בBlob או שדה מיוחד לזה ?

    יותר מזה, שפה אנושית היא דבר מאוד נפוץ, למה שלא יהיו כלים יותר רציניים מ metaphone או soundex לגלות שפה ואם דברים דומים ? למה אין לך מילון לתקן שגיאות כתיב שנשמרו לך בשדות ?

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

    כתובת IP לא יעזור לך היא מספר. ההאק זה לפרק אותה ל4 קבוצות של בתים בודדים, בשביל שלך יהיה קל יותר להתמודד עם זה. זה ההאק, לא המספרים.

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

  9. meir

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

    אתה לא מצליח להבדיל בין דומיין של נתונים לדומיין של לוגיקה. כשאתה מספק api עשיר זה אפשרי, וניתן להרחבה (אופציונלית למי שצריך). בכל מקרה מי אמר שאי אפשר ? הנה דוגמא:
    http://github.com/drotiro/postpic

    אתה תמיד כותב על "אנשים שבוחרים במה שהם מכירים לעומת…..". הנה כותב לך כאן מישהו שעבד שנים עם פיירבירד (עוד מימי ה-interbase) וה-SP שלו וכעת מעביר הכל ל-PG בגלל המגבלות של FB (ולא רק בתחום הלוגיקה, כמו שכתבתי אני מעדיף שלא תהיה שם כלל). גם תחזקתי אתה-ebuild שלו בג'נטו. לעומת זאת מהתגובות שלך כאן רואים בבירור שלא התעסקת יותר מדי בתחום המורחב יותר של PG, אז איך אתה קובע ? רק בגלל של-PG יש יותר טיפוסי מידע לעומת ההיצע הדל של פיירבירד ?

    רוצה לדחוף את FB ? יופי, אבל בלי תירוצים קלושים.

  10. ik_5 מאת

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

    לא אין לי הרבה ניסיון עם Pg ומעולם לא הסתרתי את זה.

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

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

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

  11. meir

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

    ראשית נבהיר שאני לא רוצה לוגיקה ב-db כולל SP (אבל כן רוצה טיפוסים עשירים). עכשיו במקום שנתגונן/נתקוף וניקח דיונים למקומות שלא קשורים בוא ננסה לפשט את הכוונה:

    1. הדיון הזה מדבר על "מה שאפשר לעשות עם SP" ומכסה תחרות של FB בעניין.
    2. כל מי שרואה את הזוכים בתחרות ועל מה שהם זכו (זה אמור להיות משהו מייצג ליכולות) מתרשם שמדובר בדבר די בסיסי ליישם, ואין בזוכים או ביכולות שהם מציגים שום דבר או עניין שאי אפשר להשיג בדרכים אחרות.

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

    א. אלו שמשתמשים בבסיסי נתונים "צעצוע" (כן MySQL) מתסכלים על מה ש"השיגו" המשתתפים ואומרים: "זה הכל, זה די מטופש וקל ליישום ואף נקי יותר ב-php/פרל/רובי/פייתון שאני משתמש, מי צריך את השטויות והסיבוך האלה ?"

    ב. אלו שמשתמשים בבסיסי נתונים בעלי יכולות עשירות (PG, אורקל, MS, DB2 וכד') מסתכלים וחושבים: "מה זה, זה הכל ? מי צריך את הצעצוע הזה" ?

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

    כך באים לברך ויוצאים מקללים – זה לא טוב ל-FB ולאלה שמנסים לדחוף אותו.

  12. ik_5 מאת

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

    אם זה לא מספיק, אתה מוצא אנשים שמתעללים ביכולות האלו בצורה כזו שהמידע המקורי נפגע (קורה לי את לתקופה שאנשי MS SQL שמזינים לי מידע, מזינים מידע לא נכון בגלל השטויות האלו שהם מתעללים במידע), הרבה יותר מידי אנשי DBA (משהו שמאוד נדיר עבור Fb שלא דורש יחסית מהשאר תחזוקה או שינוי טבלאות/אינדקסים אם יש הרבה מידע בניגוד ל MySQL) הולכים לשפה שהכי קל להם ליישם (אם זה ב Pg) נגיד לצורך ההדגמה שאחד זה פרל, השני זה C השלישי זה פיתון, והרביעי זה Lua. עכשיו כל 4 אנשי ה DBA האלו עובדים על מסד נתונים אחד. עכשיו השאלה היא איך כולם מתחזקים את זה ?

    ועוד פעם השאלה היא: איפה עובר הגבול בתמיכה שלך ? למה עיבוד תמונה כן, וניתוח טקסט בצורה ממש מעמיקה לא ? למה עיבוד IP כן, וגילוי פורטים פעילים לא ? איך אני מייצג Table Object שיש ב Pg ? אם אני רוצה CSV כתוצר, האם הוא יכול ליצור לי מבנה שמתאים לאקסל, מבנה שמתאים ל OOo ומבנה שמתאים לתוכנה שאני יוצר במבנה לא תקני ? האם ב XML אני יכול לציין את המבנה שאני רוצה ?

    כל הפיטצ'רים האלו מזכירים לי את מפתחי הג'אווה שמתכנתים בג'אווה כי בסביבות פיתוח כמו אקליפס, הם לא צריכים לחשוב ולהבין את השפה שהם עובדים בה, הסביבה כבר משלימה לעצמם. ומה קורה כאשר הסביבה לא ראתה שצריך להוסיף exception מיוחד ? אז התוכנה תקרוס כי מפתח הג'אווה לא השכיל לחשוב ולטפל גם במקרה כזה, הרי יש סביבה. וזו ההקבלה למסד הנתונים. אתה רוצה חיים קלים מאוד, אבל אתה משלם על זה מחיר, וכשאתה משלם על זה את המחיר בפועל, יש לך מליארד תרוצים וסיבות, אבל אתה לא מתמודד פיזית עם הבעיה, אלא מחפש איך אותו כלי שוב פעם יפתור לך (בטח שכחת הגדרה מסויימת או לא הפעלת עוד מודול נכון ? וככה עוברים להם החודשים, עד שמגיע אזה מאיר אחד ואומר fuck it אני פשוט אכתוב את זה בעצמי וזהו, ואז מה הרווחת כאן ?!)

  13. meir

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

    נמציא שדה ששומר URL. הוא מוודא שמבנה ה-URL חוקי ואין שם תווים אסורים. מאפשר לבחור את כל הכתובות ששייכות לשם מתחם או ל-TLD מסויים וכד' בצורה שעוברת אופטימיזציה עבורן – לא סתם select לא יעיל של מחרוזות.

    לעומת הטיפוס הנ"ל הלוגיקה ששייכת ליישום היא לדוגמא לוודא שה-URL הנ"ל חוקי ולא מחזיר 404 או שגיאת שרת.

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

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

    מה עם Tree Traversal ? מדוע הוא לא בעסק עבור מבנה של עץ ? מישהו יעיר את החבר'ה של ANSI ?

  14. ik_5 מאת

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

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

    אתה יכול ליצור שדה url שיכיל רק תווים ומבנה שאתה רוצה (באמצעות trigger/sp אתה מוודא שגם הסדר שלהם נכון אם זה מה שמעניין אותך).

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

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

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

  15. meir

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

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

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

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

  16. ik_5 מאת

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

  17. ארתיום

    אגב, אני אוסיף נקודה קטנטנה נגד SP.

    כשאתה כותב יישום מורכב אתה רוצה לעתים קרובות להבטיח שהוא יתמוך במספר מסדי נתונים. כי לכל אחד יש דרישות משלו: מישהו רוצה פשוטות בתחזוקה וניהול מינימלי ויבחר ב־Sqlite3 מישהו ירצה במשהו שהכי נפוץ בשירותים זולים ויבחר MySQL על כל חסרונותיו, מישהו ירצה לנצל עוצמה רבה של DB יבחר כנראה ב־PgSQL (או אם אתה עידו קנר אז ב־Firebird😉 ).

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

    עכשיו, ברגע שזה מגיע ל־SP הקוד הופך לבלתי נייד לחלוטין.

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

    אגב, אני מאוד מחבב את Sqlite3 בגלל שהוא כל־כך פשוט, קטן, ניתן לקמפל אותו כקובץ בודד ורץ על כל פלטפורמה אפשרית כולל דברים ביזאריים כמו OpenVMS, ‏Android או מערכות משובצות שונות אחרות.

  18. ik_5 מאת

    ואם אתה רוצה תכונות מתקדמות, קובץ מסד נתונים אחד שעובד עם הרבה מערכות הפעלה, ואתה יכול לבחור שהוא לא יהיה שייך לשרת, אלא מקומי,אתה בוחר ב Firebird SQL או אם קוראים לך ארתיום בילליס, אתה מממש אתה יוצר מסד נתונים משל עצמך😛

    לא יעזור כמה שתנסה לשכנע אותי ארתיום אתה לא תצליח. אם אתה רוצה משהו גנרי מאוד, אתה חייב לעבוד מאוד גבוה אי שם ברמת ORM או גישה גבוהה יותר מזה. כי סתם שאלה, אתה מקבל תוצאה של 10 רשומוות הבאות, מהתוצאה הקודמת ? בכל מסד נתונים זה שונה, ויש כאלו שלא נתמכים. אז בגישה שלך אתה תקבל את כל ה 50,000 רשומות, ותתחיל לעשות paging משל עצמך ובעצם תיצור מסד נתונים חדש שכל התפקיד שלו לתת לך גישה גנרית למידע בשביל לתת מענה לכל צורך אפשרי בעולם.

  19. ארתיום

    ם קוראים לך ארתיום בייליס, אתה מממש אתה יוצר מסד נתונים משל עצמך🙂

    אהההה!

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

    חוץ מזה, אני בהחלט יודע שניתן לעשות embedding ל־firebird כמו ל־sqlite3, אבל יש לי בעיות אחרות איתו…

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

  20. mariuz

    The ORM is not always the answer it's not even the question ,and is not always solve the problem in a speedy way practical example: do a sort for 100 millions or advanced join with these kind of tables , you can create a n report and filter it in a SP and then export it in json or xml format and you can run that stored procedure from anywhere php , delphi , or node.js

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s