Web SQL'in kullanımdan kaldırılması ve kaldırılması

Web SQL Database API, yapmanıza olanak tanır. kullanıcının bilgisayarında yapılandırılmış bir şekilde depolamak için (dahili olarak veritabanı motoru) karşılaştırdık. Nisan 2009'da kullanıma sunuldu ve Kasım 2010'da terk edildi. Safari'yi destekleyen WebKit'te uygulanmış ve Chrome'u çalıştıran Blink motoru), Firefox'u çalıştıran Gecko ve bu özelliği kullanarak WebKit bunu 2019'da kaldırmıştır.

World Wide Web Konsorsiyumu (W3C) teşvik eder benimsenmesi için web veritabanlarına ihtiyaç duyan Web Storage API'si iş yönetimi yazılımları localStorage ve sessionStorage veya IndexedDB. Bu teknolojilerin güçlü yanlarını, anahtar/değer depoları ve yapılandırılmış veridir ancak en az 100 kullanıcı arasında güçlü bir sorgu dili olabilir. Kullanıcıların web'de SQL istemesinin bir nedeni var.

Web SQL'in kullanımdan kaldırılması ve kaldırılması adımları

  • [ Tamamlandı.] Web SQL kullanımdan kaldırıldı ve şurada üçüncü taraf bağlamları için kaldırıldı: Chromium 97 ( 4 Ocak 2022).
  • [ Tamamlandı.] Güvenli olmayan bağlamlarda Web SQL erişimi şu tarihte kullanımdan kaldırıldı: Chromium 105 ( 4 Ocak 2022) itibarıyla bir uyarı mesajı Chrome Geliştirici Araçları Sorun panelinde gösterildi.

Güvenli olmayan bağlamlarda Web SQL okuyan bir uyarı içeren Chrome Geliştirici Araçları Sorunlar paneli kullanımdan kaldırıldı.

  • [ Tamamlandı.] Güvenli olmayan bağlamlarda Web SQL erişimi artık kullanılmıyor Chromium 110 ( 4 Ocak 2022). Özelliği kullanmaya devam etmek için kurumsal politikaya şuradan ulaşabilirsiniz: Chromium 110 4 Ocak 2022) Chromium 123'e ( 4 Ocak 2022).
  • [ Tamamlandı.] Tüm bağlamlarda Web SQL erişimi şu tarihte kullanımdan kaldırılmıştır: Chromium 115 ( 4 Ocak 2022) işlem yapılır ve bir uyarı mesajı gösterilir. "Chrome Geliştirici Araçları Sorun" panelinde
  • [ Tamamlandı.] CEVAP denemenin Web SQL'i kullanmaya devam etme özelliği Chromium 117'den edinilmiştir ( 4 Ocak 2022) Chromium 123'e ( 4 Ocak 2022). Desteği sonlandırılan denemeler hakkında daha fazla bilgi edinmek için Kaynak denemelerini kullanmaya başlayın.
  • [ Tamamlandı.] Tüm bağlamlarda Web SQL erişimi artık kullanılamayacak Chromium 119'dan alınmıştır.

Şimdi beni ne bekliyor?

Girişte de belirttiğimiz gibi, Web Storage API'si iş yönetimi yazılımları localStorage ve sessionStorage, veya IndexedDB standartlar pek çok durumda iyi alternatiflerdir ancak açık artırmayla her durumda desteklenmemektedir.

Depolama alanını web geliştiricilere bırakma gerekçesi

Wasm'ın ortaya çıkmasıyla SQL veya NoSQL çözümleri web'e yayılabilir. Bir örnek DuckDB-Wasm, absurd-sql. Bu yapımlara dayanarak geliştirici topluluğunun yinelemeler gerçekleştirebileceğini ve yeni depolama alanı oluşturabileceğini daha hızlı ve daha iyi çözümler sunar.

Yalnızca Web SQL'i kaldırmayı planlamıyoruz. Hatta bunun yerine bir şey açık kaynak topluluğu tarafından sağlanacak ve düzeltmeleri ve yeni özellikleri ekleme yükü olmadan istenildiği zaman güncellenebilir. doğrudan tarayıcılara gönderebilirsiniz. Amacımız, geliştiricilerin en iyi uygulamaları web'e taşıyabiliyorsunuz.

Dahası, bu örneğin yeni bir ekosisteme çok daha güçlü bir hale gelecektir! Oyunun yayınlanması dosya sistemi erişim herkese açık kullanıcı adları Son olarak da, veri kümelerinde özel depolama çözümlerinin geliştirmenizi sağlar.

Web SQL'in kullanımdan kaldırılma nedenleri

Sürdürülebilirlik ve güvenlikle ilgili endişeler

Web SQL spesifikasyonu sürdürülebilir bir şekilde uygulanamıyor. Bu durum, ve yeni özelliklerle tanışın. Standardın gerçek anlamda son sürümü states "Kullanıcı aracıları, Sqlite 3.6.19" tarafından desteklenen SQL diyalektini uygulayın.

SQLite başlangıçta kötü amaçlı SQL ifadeleri çalıştırmak üzere tasarlanmış ancak Web SQL'i uygulamak, tarayıcıların da tam olarak bunu yapması gerekir. Güvenlik süreçlerine ayak uydurma Kararlılık düzeltmeleri, Chromium'da SQLite'ın güncellenmesini belirtir. Bu yöntem doğrudan Web SQL'in tam olarak SQLite 3.6.19 gibi çalışması gerekliliğiyle çakışır.

API şekli

Web SQL, ayrıca yaşını gösteren bir API'dir. 2000'lerin sonlarının çocuğu olarak, iyi bir örnek olabilir ve laf kalabalığının aşağıdaki kod örneğindeki gibi (Nolan Lawson'ın izniyle) gösteriyor. Gördüğünüz gibi SQL ifadeleri ( SQLite SQL diyalekt) dize olarak aktarılır bazı yöntemleri inceleyelim.

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

Bu kodu çalıştırıp oluşturulan tabloyu Chrome Geliştirici Araçları ile inceleme, sonuç şudur:

Chrome Geliştirici Araçları'ndaki Web SQL bölümü incelendiğinde, ruh hali (metinsel) ve önem derecesi (tam sayı) sütunlarının yer aldığı, veritabanım adlı bir veritabanı ve altı şiddet derecesi içeren bir giriş olduğu gösteriliyor.

Uygulama uzmanı desteğinin olmaması

Gizemli API şeklinin dışında (en azından bugünün bakış açısından), Mozilla birçok endişeler hakkında daha fazla bilgi edinin:

"[SQLite]'ın, genel web'de kullanıma açık bir API için doğru temel olduğunu düşünmüyoruz 10-15 dakika yeter. Çünkü YouTube'da güvenilir, bir standarttan ibarettir. Ayrıca, kampanyalarınızı etkilemek için SQLite'a geri dönmesini öneririz. Büyük tarayıcılardan kullanıma sunmak (ve bir web standardını) kullanmak ihtiyatlı."

Mozilla'nın endişelerini öğrenmek için eski Mozillan Vladimir Vukićević'in blog yayını. Daha fazla tarih için W3C Web Uygulamaları Çalışma Grubu dakikaları (ve gerçekten ayrıntılara girmek istiyorsanız IRC günlükleri) ve posta listesi arşivleri gibi). Ayrıca, Nolan Lawson'ın blog yayını yaşananlara dair iyi bir genel bakış sağlıyor.

Geri bildirim

Bu e-postada açıklanan kullanımdan kaldırma adımlarıyla ilgili herhangi bir endişeniz varsa bize bildirmek için blink-dev posta listesi. Bu gruptaki üyelik herkese açıktır ve herkesin mesaj göndermesine izin verilir.

Teşekkür

Bu makale Joe Medley ve Ben Morss ve Joshua Bell.