Web SQL veritabanı neden kullanımdan kaldırıldı?


86

Melez bir Android uygulaması yapıyorum.

İlk başta localStorage kullanmaya karar verdim, 2 gün geçirdikten sonra çok garip olduğunu anladım ve bu yüzden düşürdüm.

Daha sonra, bugünün tüm gününü geçirdikten ve Google Chrome'daki çıktıları aldıktan sonra, indexedDB'yi aldım, android uygulamasının WebView'ında çalışmıyor.

Ve hiçbir zaman Web SQL veritabanını hiç kullanmamıştım çünkü kullanımdan kaldırıldı. Her neyse, PhoneGap'ın hala Web SQL kullandığını ve androidin tarayıcılarının desteklediğini farkettim.

Web SQL neden ilk başta kullanımdan kaldırıldı? Ve şimdi Web SQL ile gitmek benim için iyi bir fikir olacak mı?


3
LocalStorage hakkında ne garip buldun? Sadece bir anahtar / değer çifti mağazası. Bu konuda neleri beğenmediğinizi ve karşılaştığınız sorunların türünü merak ediyorum. Bir projede kullanıyorum ve karşılaştığınız vaka sorununu bilmek istiyorum.
jmq

1
@oligofren, Web-SQL'de sadece beyinden-ölü-basit-basit SQL kullanıyorsanız, bunu tam olarak localStorage ve diğerlerine
çeviremezsiniz

2
Ancak kendinize bir soyutlama katmanı oluşturma zorluğunu kaydedin (ki ben yaptım) ve sadece şu an için YDN-DB'yi kullanın . Dev.yathit.com/ydn-db/index.html . Bu cihaz için mevcut en iyi teknolojiyi kullanacaktır.
oligofren

2
Her zaman bir çeşit soyutlama katmanı kullanıyorsunuzdur. Bu programlama ve tarayıcıdaki uygulama hatalarından bağımsız olarak nasıl tutarlı davranışlar elde edeceğiniz. Sahte js çağrıları ms başına 5000'i aşar, bu nedenle YDN-DB'nin yazarı saçma sapan bir şey yapmadıysa, 100ms sırasına yakın hiçbir yerde bir performans elde etmemelisiniz. Daha çok 1ms gibi, 1: 1 ops için, IndexedDB'yi doğal olarak desteklemeyen platformlarda. Şu anda sadece eski sürümler. Mevcut tüm tarayıcılar IndexedDB'yi destekler. WebSQL kullanımdan kaldırılmıştır. Ve uzak teknoloji :-) "optimize etmeden" bazı basit profiller kullanmayı deneyin :-)
oligofren

4
@oligofren, Yorumumun noktasını kaçırıyorsunuz. Ben bir diğerini çağırmak için bir fonksiyonun ek yükünden ve viceversa'dan bahsetmiyorum. Bir db soyutlama katmanı kullandığınızda, kendinizi performans cezaları çekmeden kullanabileceğiniz bir SQL sorgu kalıpları alt kümesiyle sınırlandırdığınızı söylüyorum . Ayar yapamazsınız çünkü kütüphane sizin için otomatik olarak yapar ve her zaman doğru yapmaz. Yalnızca 1 satır veri kaydetmediğiniz sürece 1ms olmayacak.
Pacerier

Yanıtlar:


99

Kısa versiyon: Web SQL kullanımdan kaldırılmıştır çünkü standartlar gerçekten önemlidir ve Web SQL'i uygun bir standarda dönüştürmek son derece zor olurdu.

Web SQL'in mevcut uygulamaları temel olarak SQLite etrafına sarıldığından, bir standardı tanımlamak için yapılan herhangi bir girişim temelde "SQLite'in yaptığı şeyi yapıyordu". Bu yeterince iyi değil; Mevcut bir uygulamaya (özellikle SQLite gibi bir üçüncü taraf uygulama) işaret etmek yerine arayüz ve köşe kasalarını ve istisnaları tanımlamak için gerçek bir standardın kendi içinde bulunması gerekir. Aksi takdirde, belirli bir uygulamanın tuhaflıklarını alma ve standart olarak gizleme riskini alırsınız. Okuduklarımdan itibaren, W3C bunun olmasını sağlamak için önerilen standartların birden fazla bağımsız uygulamasını tercih etmektedir; Web SQL, SQLite'a çok bağlı olduğundan, bu gerçekleşmeyecekti.

Mozilla'nın blogu , özellikle Web SQL'i desteklemediği için gerekçeleriyle ilgili daha ayrıntılı bilgi verir; Anlaşılan Web SQL’in kullanımdan kaldırılmasındaki ana seslerden biriydi.

Şimdi Web SQL ile mi gitmelisin? Şu anda onu destekleyen üreticilerin (Google ve Apple gibi) yakında herhangi bir zamanda bırakmasını beklemiyorum, ancak IE ve Firefox bunu eklemeyecek ve kullanımdan kaldırıldığı için neden yatırım yapıyorsunuz? (Örneğin, Google Geliştirici İlişkileri ile birlikte Ido Green kullanılması tavsiye edilmez.)


8
Ido'nun yazdığı yazı süper basit ve birinin neden diğerini kullanması gerektiğine dair yüzeyi çizmiyor bile. Aslında, noSQL veritabanları büyük boyutta düşünülerek tasarlanmış ve kullanıcının tek bir bilgisayarında çalışan bir veritabanı için geçerli değildir. Büyük verilerle ilgili bazı avantajlar elde edebilirsiniz, ancak JOIN'ler gibi şeyleri kaybedersiniz. İndexedDb (ve appengine'de noSQL veri deposu kullanıyorum) kullanmam gerekse açık kaynak kodlu "Plus for Trello" krom uzantımı geliştirmem mümkün değildi, bu yüzden web sql için kullandım.
Zig Mandel

2
Google GMail MS-Outlook yarışmacının daha sonra tam metin arama yapabileceği ve "tek bir SQLite uygulaması (MS) olduğunda" kucaklamak, uzatmak, yok etmek "mümkün olmadığı ve Jonas Sicking (Mozilla) SQL'den hoşlanmadığı için mümkün olmadığı için. Aşırı karmaşık bir arayüze sahip olan anahtar değer depoları elbette ki daha iyidir (özellikle de her JavaScript nesnesi zaten bir ilişkisel dizi olduğu için). Ve bununla yüzleşelim, veri normalleştirme, referans bütünlüğü ve set tabanlı işlemler gerçekten SQL'yi anlamayan (wantTo) birisi için isyan ediyor, yani "Kullanıcılar SQL istemiyor".
Quandary

3
ironik olarak, WebSQL, tam olarak yapmak istediğiniz şeyse (ve PRAGMA'ya gerek duymuyorsa) SQLite ile etkileşime geçmek için mükemmeldir.
Michael,

4
mozilla bir projeyi öldürdü ve birçok durumda son derece yararlı olan bir teknolojiyi öldürdü, oradaki bazı insanları beğenmedi ve insanlar savundu. Neden? BOTH IndexedDB AND WebSQL'i uygulayabilirler
yoyo_fun

1
Safari 13, önceki sürümlerin sahip olduğu WebSQL desteğini kaldırdı .
Thunderforge

17

Josh Kelley'nin cevabı şimdiye kadarki standart çalışmanın sebebi hakkında durduğum en iyi cevap. Bu, kullanıcı tabanı ile ilgili dikkate alınması gereken ek bir perspektif olduğunu düşünüyorum.

Sonuçta, Ido Green'in konuya yaklaşımına katılmıyorum ("Bu, web geliştiricileri için teknolojiyi artık etkin olarak kullanmamaları için bir öneridir") ...

(Vi4m'in Ido Green'in makalesinin yorumunda belirtildiği gibi) inanıyorum:

Biz (geliştiriciler) hala bu teknolojiyi kullanabiliriz. Hiçbir tarayıcı satıcısı bu teknolojinin kaldırılmasını istemedi ya da kaldırmayı planlamıyor. Geliştiriciler, web'in sesidir. Hala kullanabiliriz, belki Mozilla fikrini değiştirir ;-)

Ve bir başka mantıksal yaklaşım daha eklerdim: Mobil ortam için geliştiriyorsanız ... ... Hangi ortamlar daha fazla elinizde? Cevap: iOS ve Android ... Öyleyse HANGİ webSQL'i destekliyorsa ve hedefiniz MASSIVE MOBILE ise, bunun için gidin!

Büyük uygulamaların hemen hemen her zaman başlangıçta yaptıklarını düşünün, önce en çok MOST alın, sonra (bir kez başarı elde edildi) kalan işi daha az elde etmek için çalışmayı yeniden yaratın (gerçekten bunları elde etmek istiyorsanız veya yapmanız istenirse). Son olarak, yolu belirleyen her zaman başarı olmaz mı?


Nolan Lawson'un makalesini okuduktan sonra (ki, onun icadına bir şans verme niyetinde olduğu açıktır) Bu konunun var olmaması gereken teknoloji devleri arasında yeni bir soğuk savaş olduğuna inanıyorum. Teknik özelliklerin kalıcı olarak yapıldığına inanıyorum (mümkün olduğunca uzun ve el değmeden - müşteri odaklı performans için daha iyi). İronik olarak "adamların işi" işi YENİ özellikler üretmek (bazen ihtiyaç duyulmadığı yerlerde, bu yüzden yapacak başka şeyleri de olabilir) ve aynı şekilde programcıların işleri bazen yeni sorunlara çözüm yapmak yerine halihazırda neyin işe yaradığını değiştirmeye ve yeniden yazmaya odaklanıyor ve yeni eğilimler.

Benim için, Müşteri Tarafı Veritabanları, basitçe (sunucu ve müşteri tarafları arasında) paralellik yapma meselesiydi; böylece verileri kolayca oluşturabilir, depolayabilir, yükleyebilir ve indirebilirdik. Bu yaklaşımda, aynı dillere ve yapılara sahip olmak (en azından bizim için, LAMP açık kaynak kodlu geliştiricileri) ileri ve mantıklıdır.

IndexedDB'nin daha geniş ve daha yeni olasılıklarla alternatif olma niyetinin her zaman iyi bir yaklaşım olduğuna inanıyorum, ancak bir şekilde benim için kurulması gereken (çekirdek çözüm bulut üzerinde kalabildiği zaman bile) yazılım geliştirme ihtiyacına benziyor. Bağlı kalma eğiliminde olan bir dünyada, A) bir kontrol ve mülkiyet meselesi veya B) müşteri tarafı için canavarlar geliştirmeye odaklanıyor ... ama bu tür ihtiyaçlar için Uygulamalar (Mobil dünyada) ve yazılımlar var. (PC dünyasında). Webapps'ın amacının, cihaz ne olursa olsun, web’in genişletilmesinde kalması gerektiğine inanıyorum.

Bu yaklaşımdan hoş bir Infographic çıkabileceğine inanıyorum.


Lütfen son Firefox sürümlerinin ve IE’nin WebSQL’i desteklemediğini unutmayın.
ocodo

1
Bildiğim kadarıyla WebSQL'i hiç desteklemediler. Bunu buradan kontrol edebilirsiniz: [link] caniuse.com/#feat=sql-storage . Beni şaşırtan tek şey Opera Mini, pazarı bu şekilde kaybediyorlar. Her neyse, benim için geliştirici olarak benim için önemli olan tek şey iOS ve Android için Web Uygulamaları ve Android'in her ikisinin de sistem motoru olduğuna inandığım WebKit.
DavidTaubmann

1
Bununla birlikte, tüm ticari tarayıcılar tarafından herhangi bir müşteri tarafı depolama standardı benimsenmemiştir: html5rocks.com/en/features/storage
DavidTaubmann

1
Safari 13, önceki sürümlerin sahip olduğu WebSQL desteğini kaldırdı . Dolayısıyla, "Hiçbir tarayıcı satıcısı bu teknolojinin kaldırılmasını istemedi ya da kaldırmayı planlamıyor" artık doğru değil.
Thunderforge

@Thunderforge Bilgi için teşekkürler! Bilmek gerçekten iyi! Biraz düşününce, bunun iOS için daha da kötüsü için kötü olup olmayacağını bilmiyorum, çünkü bu araç uzun yıllar boyunca bizim için tam ve faydalı oldu. Birisi, projeleri indexedDB'ye yeniden programlamak için para ödemezse, kullanıcılarımızdan daha fazla Mac veya iOS cihazı kullanmamasını veya satın almamasını önerebiliriz.
DavidTaubmann

1

Gerçek şu ki, katkıda bulunan taraflar standardın yönü üzerinde bir çıkmazza ulaştı. Kısacası, kimse kabul edemedi.

W3C sitesi bunu açıklar.

Spesifikasyon bir çıkmaz noktasına ulaştı: tüm ilgilenen uygulayıcılar aynı SQL arka ucunu (Sqlite) kullandılar, ancak bir standardizasyon yolu boyunca ilerlemek için birden fazla bağımsız uygulamaya ihtiyacımız var.

WSC sitesi


2
Benim için, bu bir şekilde, bu yolda standardize edilecek başka bir şey olmadığı konusunda hemfikir oldukları anlamına geliyor ... Olduğu gibi iyi çalışıyor çünkü standardın yolunu kendileri tarafından standartlaştırılması gereken / olması gerekmeyen mevcut bir üçüncü taraf teknolojisine bağlıyor.
DavidTaubmann

Benim için şöyle bir şey geliyor: Satıcıya özgü özelliklere izin vermediğinden (kucaklama, uzatma, imha etme?) Çünkü bu konuda aynı fikirde değiller.
Quandary

Bir tür satıcıya özgü tercih olduğuna inanıyorum, sıradaki cümle araştırmanın devam ettiğini belirtiyor. Bu nedenle tüm tarafların mevcut durumdan memnun olmadığından emin değilim ... "Web Uygulamaları Çalışma Grubu, depolama ile ilgili diğer iki spesifikasyon üzerinde çalışmaya devam ediyor: Web Depolama ve Dizine Alınmış Veri Tabanı API'si."
htm11h
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.