DBMS'yi bir web tarayıcısında kullanmak için SQLite WASM desteği eklendi

SQLite

C ile yazılmış nispeten küçük bir kütüphanede bulunan, ACID uyumlu bir ilişkisel veritabanı yönetim sistemidir.

Jardines de Viveros SQLite geliştiricileri uygulamak için bir proje geliştiriyor kütüphaneyi bir dosyada derleme yeteneği ara WebAssembly kodu bir web tarayıcısında çalıştırılabilen ve JavaScript dilinde web uygulamalarından veritabanı ile çalışmayı düzenlemek için uygundur.

Amaç projenin işlevsel bir JavaScript bağlantısı sağlamaktır bu, işlevsellik açısından SQLite API'siyle aynıdır. Web geliştiricilerine, sql.js veya Node.js tarzında verilerle çalışmak, düşük seviyeli bir C API'sini ve asenkron oluşturmaya izin veren Web Worker mekanizmasına dayalı bir API'yi sarmak için yüksek seviyeli nesne yönelimli bir arayüz sağlanır. ayrı iş parçacıkları üzerinde çalışan denetleyiciler.

Web Çalışanı tabanlı API üzerinden iş parçacığı oluşturmanın karmaşıklıklarını gizlemek için, bir varyantı mekanizmaya dayalı programlama arayüzü Söz vermek.

Web uygulamalarının SQLite'ın WASM sürümünde depoladığı veriler, geçerli oturum içinde bulunabilir (sayfa yeniden yüklendikten sonra kaybolabilir) veya istemci tarafında kalıcı olabilir (oturumlar arasında kalıcı olabilir).

Kalıcı depolama için, verileri yerel bir dosya sistemine yerleştirmek için arka uçlar hazırlanmıştır. OPFS'yi (Origin-Private FileSystem, Dosya Sistemi Erişim API'sının uzantısı, şu anda yalnızca WebKit ve Chromium tabanlı tarayıcılarda mevcuttur) ve window.localStorage ve window.sessionStorage API'lerini temel alan tarayıcı yerel depolamasını kullanarak.

localStorage/sessionStorage kullanılırken, veriler uygun anahtar/değer depolarıyla eşleştirilirken, OPFS kullanılırken iki seçenek vardır: WASMFS kullanarak sanal bir FS simülasyonu ve SQLite tabanlı bir VFS katmanı sunan ayrı bir sqlite3_vfs uygulaması. OPFS'de .

Emscripten derleyicisi, bir WASM temsilinde SQLite oluşturmak için kullanılır. Sonuç, JavaScript projenize dahil edebileceğiniz sqlite3.js ve sqlite3.wasm dosyalarıdır (HTML ve JavaScript örneği).

belirli hedeflerin Bu projeden bahsedilmektedir:

Hedef olmayanlarda belirtilenler dışında, WASM'nin C ile özellik eşliğinin izin verdiği ölçüde, sqlite3 C API için özelliklerin aşağı yukarı eksiksiz bir sarmalayıcısını sağlayın.Aslında, en azından aşağıdaki API'leri sağlayın.

  • Kullanım açısından yerele mümkün olduğunca yakın olan düşük seviyeli bir sqlite3 API'sini bağlayın.
  • Daha çok sql.js ve node.js tarzı uygulamalara benzeyen daha yüksek bir OO API'si.
  • Çalışan mesajları aracılığıyla yukarıdaki API'lerle iletişim kuran çalışan tabanlı bir API. Bu, alt düzey API'lerin bir çalışan iş parçacığına yüklendiği ana iş parçacığında kullanılmak ve onlarla çalışan mesajları aracılığıyla iletişim kurmak üzere tasarlanmıştır.
  • Kullanıcının iş parçacıkları arası iletişim özelliklerini tamamen gizleyen Worker API'sinin Promise tabanlı bir çeşidi.
  • Mümkün olduğu ölçüde, mevcut JS API'lerini kullanarak istemci tarafı kalıcı depolamayı destekleyin. Bu yazının yazıldığı tarihte, buna, Kaynak Özel Dosya Sistemi (OPFS) ve window.localStorage ve .window.sessionStorage arka uçları aracılığıyla (çok sınırlı) depolama dahildir.

Gelince spesifik olmayan hedefler:

  • WASM web merkezli bir teknoloji olduğundan ve UTF-8 bu alandaki kodlamaların kralı olduğundan, UTF3 ile ilgili sqlite16 API'lerini desteklemek için mevcut bir plan bulunmamaktadır.
  • Tarayıcı dışı WASM çalışma zamanları için destek yaygın olsa da, bu proje şu anda (2022'nin sonlarında) yalnızca tarayıcı hedeflerine odaklanmıştır. Web ile ilgili uygulama ayrıntılarının öncelikli olmasına ve API'nin JavaScript bileşenleri özellikle tarayıcı istemcilerine odaklanmasına rağmen, alt düzey WASM modülü web dışı WASM ortamlarında "çalışmalıdır".
  • Eski veya niş platformlarla uyumluluk. WASM, modern bir web için tasarlanmıştır ve modern platformlar gerektirir. Benzer şekilde, kullanımdan kaldırılan sqlite3 kitaplık seçenekleri WASM arabiriminden tamamen kaldırılacaktır.

WebAssembly desteği için kod, projenin ana deposuna eklendi. SQLite tabanlı WebSQL API'sinden farklı olarak, WASM SQLite tarayıcıdan tamamen yalıtılmıştır ve güvenliğini etkilemez (Google, SQLite'de Navigator'a saldırmak için WebSQL aracılığıyla kullanılabilecek birkaç güvenlik açığından sonra Chrome'da WebSQL desteğini bırakmaya karar verdi. ).

sonunda sen varsan onun hakkında daha fazla şey öğrenmekle ilgileniyorayrıntıları kontrol edebilirsiniz Aşağıdaki bağlantıda.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: AB Internet Networks 2008 SL
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.