Чому застаріла база даних SQL?


86

Я роблю гібридний додаток для Android.

Спочатку я вирішив скористатися localStorage, провівши 2 дні, зрозумів, що це дуже дивно, і тому кинув його.

Потім я взяв indexedDB, витративши сьогоднішній день і фактично отримавши вихід у Google Chrome, він не працює у веб-перегляді програми Android.

І я ніколи не використовував базу даних SQL взагалі, тому що вона була застарілою. Так чи інакше, я помітив, що PhoneGap все ще використовує веб-браузери SQL і андроїд.

Чому в першу чергу застарів веб-SQL? І чи буде мені гарна ідея зараз працювати з Web SQL?


3
Що вам здалося дивним у LocalStorage? Це просто магазин ключів / цінностей. Мені цікаво, що вам не сподобалося в цьому і тип проблем, з якими ви стикалися. Я використовую його в проекті, і я хотів би дізнатися про проблему, з якою ви стикалися.
jmq

1
@oligofren, Якщо ви використовуєте більш просто-просто-просто-мозок мертвий-простий SQL у веб-SQL, ви не можете точно перевести це на localStorage тощо.
Pacerier

2
Але збережіть собі клопоту щодо створення шару абстракції (що я і зробив), і просто використовуйте YDN-DB зараз dev.yathit.com/ydn-db/index.html . Він використовуватиме найкращі доступні технології для цього пристрою.
олігофрен

2
Ви завжди використовуєте якийсь шар абстракції. Це програмування і те, як ви досягаєте послідовної поведінки незалежно від помилок впровадження в браузері. Виклики Dummy js перевищують 5000 за мс, тому, якщо автор YDN-DB не зробив чогось смішно нерозумного, ви не повинні отримувати хіт вистави ніде близько порядку 100 мс. Більше, як 1 мс, на 1: 1 ops, на платформах, які не підтримують IndexedDB в оригіналі. Що, на даний момент, є лише більш старими версіями. Усі поточні браузери підтримують IndexedDB. WebSQL застаріло. І спробуйте кілька простих профілів, перш ніж "оптимізувати" виїзну технологію :-)
oligofren

4
@oligofren, ти не вистачаєш точки мого коментаря. Я не говорю про накладні витрати однієї функції, що викликає іншу і навпаки. Я кажу, що коли ви використовуєте шар абстрагування db, ви обмежуєте себе підмножиною шаблонів запитів SQL, якими ви можете користуватися, не страждаючи від штрафних санкцій. Ви не можете робити налаштування, тому що бібліотека робить це за вас автоматично, і не завжди виправляється правильно. Це не буде 1 мс, якщо ви не зберігаєте лише 1 рядок даних.
Pacerier

Відповіді:


99

Коротка версія: веб-SQL був застарілим, оскільки стандарти дійсно важливі, і перетворення Web SQL у належний стандарт було б надзвичайно важким.

Оскільки існуючі реалізації Web SQL в основному є обгортками навколо SQLite, будь-яка спроба визначити його стандарт була в основному "робити те, що робить SQLite". Це недостатньо добре; справжній стандарт повинен бути автономним, визначати інтерфейс і кутові випадки та сам виняток, а не вказувати на існуючу реалізацію (особливо на сторонній реалізацію, як SQLite). В іншому випадку ви ризикуєте взяти один конкретний примірник реалізації та закріпити їх за стандарт. З того, що я прочитав, W3C надає перевагу безлічі незалежних реалізацій запропонованих стандартів, щоб забезпечити це; оскільки Web SQL був настільки прив'язаний до SQLite, що просто не відбулося.

Блог Mozilla надає більше деталей щодо їх міркувань, зокрема щодо непідтримки Web SQL; мабуть, вони були одним із головних голосів у припиненні веб-SQL.

Чи варто йти з Web SQL зараз? Я не сподіваюся, що постачальники, які зараз його підтримують (як Google і Apple), незабаром відмовляться від нього, але IE і Firefox не додаватимуть його, і оскільки він застарілий, навіщо інвестувати в нього? (Наприклад, Ido Green із Google Developer Relations не рекомендує використовувати його.)


8
Цей пост від Ido - це супер базовий і навіть не дряпає поверхню, чому слід використовувати те чи інше. Справа в тому, що бази даних noSQL були розроблені з урахуванням великих розмірів, і це просто не стосується бази даних, що працює на одному комп'ютері користувача. Ви можете отримати деякі переваги, що стосуються великих даних, але ви втратите такі речі, як JOIN. Ні в якому разі я не міг би розробити хромоване розширення з відкритим кодом "Плюс для Trello", якби мені довелося використовувати indexedDb (і я використовую noSQL сховище даних в аппендине), тому я пішов на веб-sql.
Зіг Мандель

2
Оскільки конкурент Google GMail MS-Outlook може тоді здійснювати пошук у повнотекстовому режимі, а тому, що "обійняти, розширити, знищити" неможливо, якщо існує лише одна реалізація SQLite (MS), а також тому, що Jonas Sicking (Mozilla) не любить SQL. Зберігання ключових значень із надскладним інтерфейсом, звичайно, набагато краще (він же є і в гіфі), тим більше, що кожен об’єкт JavaScript - це вже асоціативний масив. І давайте поглянемо на це, нормалізація даних, референтна цілісність та операції на основі встановлених дій дійсно бувають для тих, хто не хоче (хоче), щоб зрозуміти SQL, він же "Користувачі не хочуть SQL".
Четвер

3
За іронією долі, WebSQL ідеально підходить для взаємодії з SQLite, якщо це саме те, що ви хочете зробити (і не потрібно PRAGMA).
Майкл

4
тож мозіла вбила проект та технологію, яка була надзвичайно корисною у багатьох ситуаціях, оскільки деяким там не сподобалось, і люди захищають їх. Чому? вони могли реалізувати BOTH IndexedDB AND WebSQL
yoyo_fun

1
Тепер Safari 13 видалив підтримку WebSQL, яку мали попередні версії.
Грім

17

Відповідь Джоша Келлі - це НАЙКРАЩА відповідь, яку я коли-небудь знайшов про причину припинення стандартної роботи. Зважаючи на це, я думаю, що є додаткова перспектива щодо бази користувачів.

Поки я не погоджуюся з підходом Ido Green до цього питання ("Це рекомендація для веб-розробників більше не використовувати технологію так ефективно") ...

Я вірю (як стверджує vi4m у коментарях до статті Ідо Гріна):

Ми (розробники) ще можемо використовувати цю технологію. Жоден постачальник браузера не вимагав видалення цієї технології, а також не планував її видаляти. Розробники - голос Інтернету. Ми просто можемо його ще використовувати, можливо, Mozilla передумає ;-)

І я додав би ще один логічний підхід: якщо ви розробляєте для мобільних середовищ ... ¿які обстановки в руках більше? Відповідь: iOS та Android ... Тож якщо BOTH підтримує webSQL, а ваша мета - МАСИВНА МОБІЛЬ, перейдіть до цього!

Подумайте, як великі програми майже завжди роблять на початку, спочатку отримуйте НАЙБІЛЬШЕ, а потім (після досягнення успіху) відтворіть роботу, щоб отримати решту менше (якщо ви дійсно хочете їх досягти або просите це зробити). Нарешті, не завжди успіх, хто знаменує шлях?


Прочитавши статтю Нолана Лоусона (в якій зрозуміло, що її намір дати шанс своєму винаходу), я вважаю, що ця справа стала новою холодною війною між тех-гігантами, яка навіть не повинна існувати. Я вважаю, що специфікації створені для того, щоб залишатися (як можна довше і не чіпше - тим краще для клієнта). За іронією долі завдання "хлопців-специфікаторів" полягає в створенні НОВИХ специфікацій (іноді там, де немає необхідності, тому він може щось більше робити), а також завдання програмістів іноді зосереджуються на зміні та переписуванні того, що вже працює, а не на вирішенні нових проблем. і нові тенденції.

Для мене, на базі даних клієнта - це просто зробити паралелі (між сторонами сервера та клієнта), щоб ми могли легко створювати, зберігати, завантажувати та завантажувати дані. При такому підході наявність однакових мов та структур (принаймні для нас, розробників LAMP з відкритими ресурсами) прямо і логіка.

Я вважаю, що намір IndexedDB бути альтернативою з ширшими та новими можливостями - це завжди хороший підхід, але якимось чином для мене це нагадує необхідність розробки програмного забезпечення, яке потрібно встановлювати (навіть коли основне рішення може залишатися на хмарі). У світі, який має тенденцію залишатися на зв’язку, це звучить як A) питання контролю та володіння або B) зосередження уваги на розробці монстрів для клієнта ... але для таких потреб існують додатки (у мобільному світі) та програмне забезпечення (у світі ПК). Я вважаю, що мета Webapps повинна залишатися головним чином розширенням Інтернету незалежно від пристрою.

Я вважаю, що приємна інфографіка може вийти з цього підходу.


Зауважте, що останні версії Firefox та IE взагалі не підтримують WebSQL.
окудо

1
Наскільки мені відомо, вони ніколи не підтримували WebSQL. Ви можете перевірити це тут: [посилання] caniuse.com/#feat=sql-storage . Єдине, що мене дивує - це Opera Mini, вони таким чином втрачають ринок. У будь-якому випадку, для мене як розробника важливими є лише iOS та Android для WebApps, і той самий WebKit, який, на мою думку, є системним двигуном.
DavidTaubmann

1
Тим не менш, жоден стандарт зберігання на стороні клієнта не був прийнятий усіма комерційними браузерами: html5rocks.com/en/features/storage
DavidTaubmann

1
Тепер Safari 13 видалив підтримку WebSQL, яку мали попередні версії. Тож "Жоден постачальник браузера не вимагав видалення цієї технології, а також не планує її видаляти" більше не відповідає дійсності.
Грім

@Thunderforge Дякую за інформацію! Дійсно добре знати! Роздумуючи трохи далі, я не знаю, чи буде це погано для розробників чи гірше для iOS, оскільки цей інструмент був повноцінним та корисним для нас з такої кількості років. Ми можемо рекомендувати нашим користувачам більше не використовувати або купувати пристрої Mac чи iOS, якщо хтось не оплатить витрати на перепрограмування проектів до індексованого ДБ.
DavidTaubmann

1

Реальність така, що сторони, що надають допомогу, досягли тупика щодо напрямку стандарту. Словом, ніхто не міг погодитися.

Сайт W3C пояснює це.

Специфікація досягла заходу: усі зацікавлені виконавці використовували один і той же сервер (Sqlite), але нам потрібно кілька незалежних реалізацій, щоб продовжувати шлях до стандартизації.

Сайт WSC


2
Для мене це якось означає, що вони погоджуються, що більше нічого стандартизувати на цьому шляху ... Це чудово працює так, як це відбувається, оскільки він з'єднує шлях стандарту з існуючою сторонній технологією, яка не повинна / може бути не стандартизована ними.
DavidTaubmann

Для мене це звучить так: Вони не погодилися з цим, оскільки це не дає можливостей, характерних для продавця (обійняти, розширити, знищити?).
Четвер

Я вважаю, що це якесь певне уподобання для постачальника, наступне речення зазначає, що дослідження тривають. Тож я не впевнений, що всі сторони були задоволені поточним станом ... "Робоча група з веб-додатків продовжує роботу над двома іншими специфікаціями, що стосуються пам’яті: Веб-сховище та API-
код
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.