Wycofanie i usunięcie Web SQL

Interfejs Web SQL Database API, który umożliwia przechowywania danych na komputerze użytkownika w uporządkowany sposób (wewnętrznie na podstawie (czyli silnikiem bazy danych SQLite), była wprowadzona w kwietniu 2009 r. oraz opuszczony w listopadzie 2010 r.. Choć została wdrożona w technologii WebKit (na której opiera się Safari), i pozostała aktywna silnika Blink (zasilającego Chrome), Gecko (w przeglądarce Firefox) nigdy wdrożyliśmy tę funkcję i WebKit usunął ją w 2019 roku.

World Wide Web Consortium (W3C) zachęcanie do działania którzy potrzebują internetowych baz danych, Interfejs Web Storage API technologie takie jak localStorage oraz sessionStorage lub IndexedDB. Technologie te wykazują swoje mocne strony w zakresie magazynów klucz-wartość oraz uporządkowanych danych, ale mają też takie słabe punkty, jak brak silnego języka zapytań. Nie bez powodu ludzie potrzebują SQL w internecie.

Kroki wycofywania i usuwania Web SQL

  • [ Gotowe.] Usługa Web SQL została wycofana i usunięta na potrzeby kontekstów innych firm w: Chromium 97 ( 4 stycznia 2022 r.).
  • [ Gotowe.] Dostęp do Web SQL w niezabezpieczonych kontekstach został wycofany Chromium 105 ( 4 stycznia 2022 r.). widoczna w panelu problemów w Narzędziach deweloperskich w Chrome.

Panel problemów z Narzędziami deweloperskimi w Chrome z ostrzeżeniem informującym, że usługa Web SQL w niezabezpieczonych kontekstach została wycofana.

  • [ Gotowe.] Dostęp do Web SQL w niezabezpieczonych kontekstach nie jest już dostępna w wersji Chromium 110 ( 4 stycznia 2022 r.). An zasadą firmy, która pozwala na dalsze korzystanie z tej funkcji. Chromium 110 ( od 4 stycznia 2022 r.) do Chromium 123 ( 4 stycznia 2022 r.).
  • [ Gotowe.] Dostęp do Web SQL we wszystkich kontekstach jest wycofany od Chromium 115 ( 4 stycznia 2022 r.) i zobaczysz ostrzeżenie. w panelu Problemy w Narzędziach deweloperskich w Chrome.
  • [ Gotowe.] O wycofania wersji próbnej możliwość dalszego korzystania z Web SQL była dostępna w Chromium 117 ( od 4 stycznia 2022 r.) do Chromium 123 ( 4 stycznia 2022 r.). Więcej informacji o próbach wycofania znajdziesz tutaj: Wypróbuj origin
  • [ Gotowe.] Dostęp do Web SQL we wszystkich kontekstach nie jest już dostępny w Chromium 119.

Co dalej

Jak wspomnieliśmy na wstępie, Interfejs Web Storage API technologie takie jak localStorage. oraz sessionStorage, lub IndexedDB standardowe rozwiązania stanowią dobrą alternatywę w wielu przypadkach, ale nie we wszystkich przypadkach.

Uzasadnienie pozostawienia miejsca na dane deweloperom stron internetowych

Wraz z nadejściem rozwiązań Wasm, SQL i NoSQL mogą pojawić się w internecie. Przykład to DuckDB-Wasm, a drugi to absurd-sql. Na podstawie tych kompozycji uważamy, że społeczność deweloperów może iterować i tworzyć nowe miejsce na dane są szybsze i lepsze niż dostawca przeglądarek.

Planujemy nie tylko usunąć Web SQL. Zastąpiliśmy go coś — będzie hostowana przez społeczność open source, pełniąca funkcję pakietu, mogą być aktualizowane według własnego uznania bez konieczności wprowadzania poprawek i nowych funkcji. bezpośrednio do przeglądarek. Naszym celem jest umożliwienie deweloperom oferowania z bazą danych w sieci.

Mamy też nadzieję, że ten przykład pomoże nowemu ekosystemowi i baz danych typu open source Premiera nicki dostępu do systemu plików i na koniec udostępnia nowy obiekt podstawowy, na którym można stosować niestandardowe rozwiązania pamięci masowej stworzona przez nas.

Powody wycofania Web SQL

Kwestie dotyczące zrównoważonego rozwoju i bezpieczeństwa

Specyfikacji Web SQL nie można wdrożyć w sposób zrównoważony, co ogranicza innowacyjności i nowych funkcji. Ostatnia wersja standardu określa „Klienty użytkownika muszą wdrożysz dialekt SQL obsługiwany przez Sqlite 3.6.19".

Język SQLite nie był początkowo ma na celu uruchamianie złośliwych instrukcji SQL, ale implementowanie kodu Web SQL oznacza przeglądarki muszą zrobić to samo. Konieczność zachowania bezpieczeństwa poprawki stabilności wymagają aktualizacji SQLite w Chromium. Wynika to bezpośrednio nie jest w żaden sposób sprzeczna z wymaganiami Web SQL, które polegają na zachowaniu dokładnie takiego, jak SQLite 3.6.19.

Kształt interfejsu API

Web SQL to także interfejs API, który pokazuje jego wiek. Jako dziecko pod koniec pierwszej dekady XXI wieku świetnym przykładem „oddzwaniania”. jako następujący przykładowy kod (informacje uzyskane dzięki uprzejmości Nolana Lawsona) co pokazuje. Jak widać, instrukcje SQL (przy użyciu SQLite) są przekazywane jako ciągi znaków. do metod baz danych.

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!');
      },
    );
  },
);

Gdyby ten kod został uruchomiony przez Ciebie sprawdzić utworzoną tabelę za pomocą Narzędzi deweloperskich w Chrome, oto wynik:

Sprawdzenie sekcji Web SQL w Narzędziach deweloperskich w Chrome pokazuje bazę danych o nazwie mydatabase z tabelą o nazwie „burze z deszczami” z kolumnami Nastrój (tekstowy) i Waga (całkowita) z 1 wpisem o nastroju posępnym i wagę 6.

Brak pomocy we wdrażaniu

Oprócz tajemniczego kształtu interfejsu API (przynajmniej z dzisiejszego punktu widzenia) Mozilla miał wiele wątpliwości o tworzeniu Web SQL na bazie SQLite:

„Uważamy, że [SQLite] nie jest odpowiednią podstawą dla interfejsu API dostępnego w ogólnodostępnym internecie. ponieważ nie istnieją wiarygodne, powszechnie akceptowane treści. który tworzy podzbiory SQL w użyteczny sposób. Ponadto nie chcemy wprowadzać zmian na SQLite, aby wpłynąć na później sieć i nie myśleć o używaniu popularnej przeglądarki (i standard internetowy) do SQLite jest rozsądna”.

Więcej informacji o obawach firmy Mozilla: poprzedniego posta Mozillan Vladimira Vukićevića. Aby poznać więcej historii, sprawdź Procedury w grupie roboczej ds. aplikacji internetowych W3C (a jeśli naprawdę chcesz poznać szczegóły, przeczytaj dzienniki IRC) oraz archiwów list adresowych). Dodatkowo: Post na blogu Nolana Lawsona zawiera ogólny opis tego, co zaszło.

Prześlij opinię

Jeśli masz jakiekolwiek wątpliwości związane z krokami wycofywania omawianymi w tym daj nam znać na lista adresowa blink-dev. Członkostwo w tej grupie jest dostępne dla każdego i każdy może zamieszczać posty.

Podziękowania

Ten artykuł został zrecenzowany przez Joe Medley i Ben Morss i Joshua Bell