הוצאה משימוש והסרה של Web SQL

את Web SQL Database API, שמאפשר לכם לאחסן נתונים בצורה מובנית במחשב של המשתמש (באופן פנימי על סמך ומנוע מסד הנתונים SQLite), הוצגה באפריל 2009 וגם ננטש בנובמבר 2010. אמנם הוא הוטמע ב-WebKit (שמפעיל את Safari) ונשאר פעיל ב- המנוע Blink (שמפעיל את Chrome), Gecko (שמפעיל את Firefox) אף פעם הטמענו את התכונה הזו WebKit הסיר אותו ב-2019.

The World Wide Web Consortium (W3C) עידודים שזקוקים למסדי נתונים באינטרנט Web Storage API טכנולוגיות כמו localStorage וגם sessionStorage, או IndexedDB. הטכנולוגיות האלה מראות את החוזקות שלהן כשמדובר בחנויות מפתח/ערך של נתונים מובְנים, אבל כמובן שיש להם גם חולשות כמו היעדר שפת שאילתה חזקה. יש סיבה לכך שאנשים רוצים להשתמש ב-SQL באינטרנט.

שלבים להוצאה משימוש והסרה של Web SQL

  • [ בוצע.] Web SQL הוצא משימוש והוסר בהקשרים של צד שלישי Chromium 97 ( 4 בינואר 2022).
  • [ בוצע.] גישת Web SQL בהקשרים לא מאובטחים הוצאה משימוש החל מ- Chromium 105 ( 4 בינואר 2022) אז תוצג אזהרה הוצגה בחלונית 'בעיות' בכלי הפיתוח ל-Chrome.

חלונית הבעיות בכלי הפיתוח ל-Chrome עם אזהרה שקוראת SQL Web SQL בהקשרים לא מאובטחים הוצאה משימוש.

  • [ בוצע.] אין יותר גישה ל-Web SQL בהקשרים לא מאובטחים זמינות החל מ-Chromium 110 ( 4 בינואר 2022). מדיניות הארגון כדי להמשיך להשתמש בתכונה זמינה מ- Chromium 110 ( 4 בינואר 2022) אל Chromium 123 ( 4 בינואר 2022).
  • [ בוצע.] גישת Web SQL בכל ההקשרים הוצאה משימוש החל מ- Chromium 115 ( 4 בינואר 2022) ומוצגת הודעת אזהרה בחלונית 'בעיות בכלי הפיתוח' ל-Chrome.
  • [ בוצע.] א' הוצאה משימוש של להמשיך להשתמש ב-Web SQL זמין מ-Chromium 117 ( 4 בינואר 2022) אל Chromium 123 ( 4 בינואר 2022). מידע נוסף על ניסיונות הוצאה משימוש זמין במאמר איך מתחילים לעבוד עם גרסאות מקור לניסיון
  • [ בוצע.] אין יותר גישה ל-Web SQL בכל ההקשרים מ-Chromium 119.

לאן ממשיכים מכאן

כפי שצוין במבוא, Web Storage API טכנולוגיות כמו localStorage וגם sessionStorage, או IndexedDB הם חלופות טובות במקרים רבים, אבל לא בכולם.

הנימוק להשארת האחסון למפתחי אתרים

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

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

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

סיבות להוצאה משימוש של Web SQL

חששות לגבי קיימוּת ואבטחה

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

בהתחלה לא ניתן להשתמש ב-SQLite שנועדו להריץ הצהרות SQL זדוניות, ובמקביל להטמיע אמצעים Web SQL הדפדפנים חייבים לעשות את זה בדיוק. צריך להקפיד על אבטחה תיקוני יציבות קובעים את עדכון SQLite ב-Chromium. מגיע באופן ישיר מנוגדת לדרישה של Web SQL להתנהג בדיוק כמו SQLite 3.6.19.

צורת API

Web SQL הוא גם ממשק API שמציג את גילו. כילד של סוף שנות ה-2000, דוגמה מצוינת ל"התקשרות לגיהנום", בתור דוגמת הקוד הבאה (באדיבות נולן לוסון) מדגים. כמו שאפשר לראות, הצהרות SQL דיאלקט SQL SQLite) מועבר כמחרוזות ל-methods של מסד נתונים.

openDatabase(
  // Name
  'mydatabase',
  // Version
  1,
  // Display name
  'mydatabase',
  // Estimated size
  5000000,
  // Creation callback
  function (db) {
    db.transaction(
      // Transaction callback
      function (tx) {
        // Execute SQL statement
        tx.executeSql(
          // SQL statement
          'create table rainstorms (mood text, severity int)',
          // Arguments
          [],
          // Success callback
          function () {
            // Execute SQL statement
            tx.executeSql(
              // SQL statement
              'insert into rainstorms values (?, ?)',
              // Arguments
              ['somber', 6],
              // Success callback
              function () {
                // Execute SQL statement
                tx.executeSql(
                  // SQL statement
                  'select * from rainstorms where mood = ?',
                  // Arguments
                  ['somber'],
                  // Success callback
                  function (tx, res) {
                    // Do something with the result
                    var row = res.rows.item(0);
                    console.log(
                      'rainstorm severity: ' +
                        row.severity +
                        ',  my mood: ' +
                        row.mood,
                    );
                  },
                );
              },
            );
          },
        );
      },
      // Error callback
      function (err) {
        console.log('Transaction failed!: ' + err);
      },
      // Success callback);
      function () {
        console.log('Transaction succeeded!');
      },
    );
  },
);

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

בבדיקה של הקטע Web SQL בכלי הפיתוח ל-Chrome מוצג מסד נתונים בשם mydatabase, שמכיל טבלה בשם 'סופות גשם' עם מצב הרוח של העמודות (טקסטואלי) וחומרה (מספר שלם) שכולל ערך אחד עם מצב רוח קודר וחומרה של שש.

אין תמיכה במטמיע

מלבד צורת ה-API של arcane (לפחות מנקודת המבט של היום), Mozilla היו הרבה חששות על Web SQL שמבוסס על SQLite:

"אנחנו לא חושבים ש-[SQLite] הוא הבסיס הנכון לממשק API שחשוף לאינטרנט הכללי בראש ובראשונה, כי אין כאן כלל שיוצרת קבוצת משנה של SQL בצורה שימושית. בנוסף, אנחנו לא רוצים שיבוצעו שינויים ל-SQLite כדי להשפיע על האינטרנט מאוחר יותר, ולא לנצל את השימוש של מושקרים (ותקן אינטרנט) ל-SQLite הם חכמים."

אפשר לקרוא על החששות של Mozilla בקישור הפוסט בבלוג של Mozillan ולדימיר ווקיצ'ביק. להיסטוריה נוספת, כדאי לעיין דקות קבוצת העבודה של אפליקציות אינטרנט של W3C (ואם אתם באמת רוצים להיכנס לפרטים, קראו את יומני IRC) וגם ארכיונים של רשימות דואר). בנוסף, הפוסט בבלוג של Nolan Lawson מספק סקירה כללית של מה שקרה.

משוב

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

אישורים

המאמר הזה נבדק על ידי ג'ו מדלי בן מורס, וגם Joshua Bell.