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.
- [ 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.
- [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.] O
- [ 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:
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.
Powiązane artykuły
- Wpis ChromeStatus: Wycofanie i usunięcie bazy danych WebSQL w kontekście rozwiązań zewnętrznych
- Wpis ChromeStatus: Wycofanie i usunięcie bazy danych WebSQL w niezabezpieczonych kontekstach
- Zamierzamy wycofać i usunąć: WebSQL w kontekście rozwiązań zewnętrznych
- Zamierzamy wycofać i usunąć: WebSQL w niezabezpieczonych kontekstach
- Problem z Chromium: Wycofanie i usunięcie bazy danych WebSQL w kontekście rozwiązań zewnętrznych
- Problem z Chromium: Wycofanie i usunięcie bazy danych WebSQL w niezabezpieczonych kontekstach
- Problem z Chromium: Wycofanie i usunięcie bazy danych WebSQL (Window#openDatabase)
- SQLite Wasm w przeglądarce opartym na Origin Private File System
Podziękowania
Ten artykuł został zrecenzowany przez Joe Medley i Ben Morss i Joshua Bell