Mengapa database SQL Web sudah tidak digunakan lagi?

86

Saya membuat aplikasi Android hybrid.

Pada awalnya saya memutuskan untuk menggunakan localStorage, setelah menghabiskan 2 hari, saya menyadari bahwa itu sangat aneh dan menjatuhkannya.

Kemudian, saya mengambil indexedDB, setelah menghabiskan sepanjang hari hari ini dan benar-benar mendapatkan output di Google Chrome, itu tidak berjalan di dalam WebView dari aplikasi android.

Dan saya tidak pernah menggunakan database SQL Web sama sekali karena sudah usang. Bagaimanapun, telah menjadi perhatian saya bahwa PhoneGap masih menggunakan Web SQL dan browser android mendukungnya.

Mengapa Web SQL sudah tidak digunakan lagi? Dan apakah itu ide yang bagus untuk saya menggunakan Web SQL sekarang?

agas
sumber
3
Apa yang Anda temukan aneh tentang Penyimpanan lokal? Ini hanya toko pasangan kunci / nilai. Saya ingin tahu apa yang tidak Anda sukai tentang itu dan jenis masalah yang Anda hadapi. Saya menggunakannya dalam sebuah proyek dan ingin tahu masalah kasus yang Anda hadapi.
jmq
1
@oligofren, Jika Anda menggunakan SQL web sederhana yang lebih dari sekadar otak mati, Anda tidak dapat menerjemahkannya ke localStorage dan lain
Pacerier
2
Tapi selamatkan diri Anda dari kerumitan membuat lapisan abstraksi (yang saya lakukan), dan cukup gunakan YDN-DB untuk sekarang dev.yathit.com/ydn-db/index.html . Ini akan menggunakan teknologi terbaik yang tersedia untuk perangkat itu.
oligofren
2
Anda selalu menggunakan semacam lapisan abstraksi. Itu pemrograman dan bagaimana Anda mencapai perilaku yang konsisten terlepas dari bug implementasi di browser. Panggilan Dummy js melebihi 5000 per ms, jadi kecuali pembuat YDN-DB telah melakukan sesuatu yang sangat bodoh, Anda seharusnya tidak mendapatkan performa yang bagus di dekat urutan 100 ms. Lebih mirip 1ms, untuk op 1: 1, pada platform yang tidak mendukung IndexedDB secara asli. Yang saat ini hanya versi lama. Semua browser saat ini mendukung IndexedDB. WebSQL sudah tidak digunakan lagi. Dan cobalah profil sederhana sebelum Anda "mengoptimalkan" teknologi jauh :-)
oligofren
4
@oligofren, Anda kehilangan inti dari komentar saya. Saya tidak berbicara tentang overhead satu fungsi memanggil fungsi lain dan sebaliknya. Saya katakan ketika Anda menggunakan lapisan abstraksi db, Anda membatasi diri Anda sendiri ke subset pola kueri SQL yang dapat Anda gunakan tanpa menderita penalti kinerja. Anda tidak dapat melakukan tuning karena perpustakaan melakukannya untuk Anda secara otomatis dan tidak selalu memperbaikinya. Ini tidak akan menjadi 1 ms kecuali Anda hanya menyimpan 1 baris data.
Pacerier

Jawaban:

99

Versi singkat: Web SQL sudah usang karena standar sangat penting dan mengubah Web SQL menjadi standar yang tepat akan sangat sulit.

Karena implementasi yang ada dari Web SQL pada dasarnya adalah pembungkus di sekitar SQLite, setiap upaya untuk mendefinisikan standar itu pada dasarnya adalah "melakukan apa yang SQLite lakukan." Ini tidak cukup baik; standar sejati perlu mandiri, untuk mendefinisikan antarmuka dan kasus sudut dan pengecualian itu sendiri bukannya menunjuk ke implementasi yang ada (terutama implementasi pihak ketiga seperti SQLite). Jika tidak, Anda berisiko mengambil satu kebiasaan implementasi tertentu dan mengabadikannya sebagai standar. Dari apa yang saya baca, W3C lebih memilih beberapa implementasi independen dari standar yang diusulkan untuk membantu memastikan bahwa ini terjadi; karena Web SQL sangat terikat dengan SQLite, itu tidak akan terjadi.

Blog Mozilla memberikan rincian lebih lanjut tentang alasan mereka khususnya karena tidak mendukung Web SQL; rupanya mereka adalah salah satu suara utama dalam membuat Web SQL tidak digunakan lagi.

Haruskah Anda menggunakan Web SQL sekarang? Saya tidak berharap vendor yang saat ini mendukungnya (seperti Google dan Apple) untuk segera menjatuhkannya, tetapi IE dan Firefox tidak akan menambahkannya, dan karena sudah usang, mengapa berinvestasi di dalamnya? (Misalnya, Ido Green , dengan Hubungan Pengembang Google, tidak merekomendasikan menggunakannya.)

Josh Kelley
sumber
8
Posting itu oleh Ido adalah super dasar dan bahkan tidak menggores permukaan mengapa seseorang harus menggunakan satu atau yang lain. faktanya adalah, database noSQL dirancang dengan ukuran besar dalam pikiran, dan itu tidak berlaku untuk database yang berjalan pada komputer tunggal pengguna. Anda mungkin mendapatkan beberapa keuntungan yang relevan dengan data besar, tetapi Anda kehilangan barang seperti BERGABUNG. Tidak mungkin saya bisa mengembangkan ekstensi krom open-source "Plus for Trello" saya jika saya harus menggunakan indexedDb (dan saya menggunakan datastore noSQL di appengine) jadi saya pergi ke web sql.
Zig Mandel
2
Karena pesaing Google GMail MS-Outlook kemudian dapat melakukan pencarian teks lengkap, dan karena "merangkul, memperluas, memusnahkan" tidak mungkin ketika hanya ada satu implementasi SQLite (MS), dan karena Jonas Sicking (Mozilla) tidak menyukai SQL. Nilai kunci toko dengan antarmuka yang terlalu rumit tentu saja jauh lebih baik (alias dalam tanda hubung), terutama karena setiap objek JavaScript sudah merupakan array asosiatif. Dan mari kita hadapi itu, normalisasi data, integritas referensial dan operasi berbasis set benar-benar menjijikkan bagi seseorang yang tidak (mau) memahami SQL, alias "Pengguna tidak ingin SQL".
Quandary
3
ironisnya, WebSQL sangat cocok untuk berinteraksi dengan SQLite jika itu yang ingin Anda lakukan (dan tidak perlu PRAGMA).
Michael
4
jadi mozilla membunuh sebuah proyek dan teknologi yang sangat berguna dalam banyak situasi karena beberapa orang di sana tidak menyukainya dan orang-orang mempertahankannya. Mengapa? mereka dapat mengimplementasikan KEDUA IndexedDB AND WebSQL
yoyo_fun
1
Safari 13 sekarang telah menghapus dukungan untuk WebSQL yang dimiliki versi sebelumnya.
Thunderforge
17

Jawaban Josh Kelley sejauh ini merupakan jawaban TERBAIK yang pernah saya temukan tentang alasan standar pekerjaan harus dihentikan. Yang mengatakan, saya pikir ada perspektif tambahan untuk dipertimbangkan mengenai basis pengguna.

Meskipun, saya tidak setuju pada pendekatan Ido Green untuk subjek ("Ini adalah rekomendasi bagi pengembang web untuk tidak lagi menggunakan teknologi secara efektif") ...

Saya percaya (sebagaimana dinyatakan vi4m dalam komentar artikel Ido Green):

Kami (pengembang) masih dapat menggunakan teknologi ini. Tidak ada vendor browser yang meminta penghapusan teknologi ini, atau berencana untuk menghapusnya. Pengembang adalah suara web. Kita masih bisa menggunakannya, mungkin Mozilla akan berubah pikiran ;-)

Dan saya akan menambahkan pendekatan logis lain: Jika Anda mengembangkan untuk ambien seluler ... ¿ambien apa yang ada di tangan lebih banyak? Jawab: iOS dan Android ... Jadi jika KEDUA mendukung webSQL, dan target Anda adalah MOBILE BESAR, lakukan saja!

Pikirkan sebagai aplikasi besar telah dilakukan hampir selalu di awal, dapatkan PALING pertama, lalu (setelah mencapai kesuksesan) buat ulang pekerjaan untuk mendapatkan sisanya yang lebih sedikit (jika Anda benar-benar ingin mencapainya atau diminta untuk melakukannya). Akhirnya, tidak selalu sukses yang menandai jalan?


Setelah membaca artikel Nolan Lawson (yang jelas niatnya untuk memberi kesempatan pada penemuannya), saya percaya masalah ini menjadi perang dingin baru antara raksasa teknologi yang bahkan seharusnya tidak ada. Saya percaya spesifikasi dibuat untuk tetap (lebih lama dan tidak tersentuh mungkin - lebih baik untuk kinerja yang berorientasi klien). Ironisnya pekerjaan "specs guys" adalah untuk menghasilkan spec BARU (kadang-kadang di mana tidak ada yang diperlukan, sehingga ia dapat memiliki sesuatu yang lebih untuk dilakukan), dan juga pekerjaan programmer kadang-kadang fokus pada mengubah dan menulis ulang apa yang sudah berfungsi daripada melakukan solusi untuk masalah baru dan kecenderungan baru.

Bagi saya, Database Sisi Klien adalah masalah membuat paralel (antara server dan sisi klien) sehingga kami dapat membuat, menyimpan, mengunggah, dan mengunduh data dengan mudah. Di bawah pendekatan ini, memiliki bahasa dan struktur yang sama (setidaknya bagi kami, pengembang opensource LAMP) adalah lurus dan logis.

Saya percaya niat IndexedDB untuk menjadi alternatif dengan kemungkinan yang lebih luas dan lebih baru adalah pendekatan yang selalu baik, tetapi entah bagaimana itu mirip dengan saya dengan kebutuhan untuk mengembangkan perangkat lunak yang PERLU untuk diinstal (bahkan ketika solusi inti dapat tetap ada di cloud). Di dunia yang cenderung tetap terhubung kedengarannya seperti A) masalah kontrol dan kepemilikan atau B) berfokus pada pengembangan monster untuk sisi klien ... tetapi untuk kebutuhan semacam itu ada Aplikasi (di dunia Seluler) dan perangkat lunak (di dunia PC). Saya percaya tujuan Webapps harus tetap terutama untuk memperluas web apa pun perangkatnya.

Saya percaya infografis yang bagus bisa keluar dari pendekatan ini.

David Taubmann
sumber
Harap dicatat bahwa versi Firefox dan IE terbaru tidak mendukung WebSQL sama sekali.
ocodo
1
Sejauh yang saya tahu mereka tidak pernah mendukung WebSQL. Anda dapat memeriksanya di sini: [tautan] caniuse.com/#feat=sql-storage . Satu-satunya yang membuat saya kagum adalah Opera Mini, mereka kehilangan pasar dengan cara ini. Ngomong-ngomong, bagi saya sebagai pengembang satu-satunya yang penting adalah iOS dan Android untuk WebApps, dan WebKit yang saya yakini adalah mesin sistem keduanya.
DavidTaubmann
1
Namun demikian, tidak ada standar penyimpanan sisi klien yang telah diadopsi oleh semua browser komersial: html5rocks.com/en/features/storage
DavidTaubmann
1
Safari 13 sekarang telah menghapus dukungan untuk WebSQL yang dimiliki versi sebelumnya. Jadi "Tidak ada vendor browser yang meminta penghapusan teknologi ini, atau berencana untuk menghapusnya" tidak lagi benar.
Thunderforge
@Thunderforge Terima kasih atas informasinya! Benar-benar baik untuk diketahui! Berpikir sedikit ke depan, saya tidak tahu apakah ini akan berdampak buruk bagi pengembang atau lebih buruk untuk iOS, karena alat ini telah lengkap dan bermanfaat bagi kami sejak bertahun-tahun. Kami mungkin menyarankan pengguna kami untuk tidak menggunakan atau membeli lagi perangkat Mac atau iOS, kecuali seseorang membayar biaya untuk memprogram ulang proyek ke indexedDB.
DavidTaubmann
1

Kenyataannya adalah bahwa pihak-pihak yang berkontribusi mencapai jalan buntu pada arah standar. Singkatnya, tidak ada yang bisa setuju.

Situs W3C menjelaskan hal ini.

Spesifikasi mencapai jalan buntu: semua pelaksana yang tertarik telah menggunakan SQL backend (Sqlite) yang sama, tetapi kita membutuhkan beberapa implementasi independen untuk melanjutkan sepanjang jalur standardisasi.

Situs WSC

htm11h
sumber
2
Bagi saya, ini berarti mereka sepakat bahwa tidak ada hal lain untuk dibakukan di jalur itu ... Ini berfungsi dengan baik seperti itu karena menghubungkan jalur standar ke teknologi pihak ketiga yang ada yang seharusnya / mungkin tidak distandarisasi oleh mereka.
DavidTaubmann
Bagi saya itu terdengar seperti: Mereka tidak setuju, karena tidak memungkinkan untuk fitur khusus vendor (merangkul, memperluas, memusnahkan?).
Quandary
Saya percaya ini adalah semacam preferensi khusus vendor, kalimat berikutnya menyatakan bahwa penelitian sedang berlangsung. Jadi saya tidak yakin semua pihak puas dengan keadaan saat ini ... "Kelompok Kerja Aplikasi Web terus bekerja pada dua spesifikasi terkait penyimpanan lainnya: Penyimpanan Web dan API Basis Data Terindeks."
htm11h