29 марта 2018

IndexedDB 2.0 вышла официально


Google в очередной раз доказал своё лидерство в области баз данных, включив финальную версию СУБД IndexedDB 2.0 в браузер Google Chrome.

Стандарт билиотеки для клиентской СУБД IndexedDB 2.0 был принят менее двух месяцев назад. Тем не менее, Google уже включил её в свой браузер Google Chrome, чем, полагаю, немало удивил даже самих давних сторонников IndexedDB.

Предистория вопроса

Браузер Google Chrome уже довольно давно поставляется с тремя основновными встроенными клиентскими СУБД (Web Storage, Web SQL и IndexedDB), не считая множества других средств постоянного хранения данных Web приложений на клиентском компьютере.

Среди этой троицы Web Storage является самой широко используемой СУБД ввиду своей простоты (всего 5 основных команд, которые можно освоить за 10 минут). Однако, ввиду своих ограничений по функциональности, использовать Web Storage для серьёзных задач проблематично.

Web SQL напротив обладает максимум возможностей реляционной СУБД, практически полностью удовлетворяяя стандарту SQL-92, однако ввиду того, что Microsoft с Mozilla объединились в борьбе против этой самой функциональной и быстрой (согласно неофициальным, но весьма показательным тестам) СУБД, официальное принятие этого стандарта для всех браузеров было заморожено навсегда ещё в 2010 году. Возможно, это последняя крупная пакость, которую Microsoft смог сделать всему Web сообществу до своего окончательного поражения на рынке Web приложений в 2011 году.

IndexedDB, хотя и гораздо менее функциональна по части реализации реляционных запросов, чем Web SQL, тем не менее всё же позволяет хранить данные в реляционном виде внутри браузера, и при этом пользуется полной поддержкой со стороны Microsoft и Mozilla, что привело к появлению СУБД стандарта IndexedDB 1.0 во всех основных браузереах.

Новый стандарт IndexedDB 2.0

В обмен на отказ от развития своего стандарта Web SQL компания Google получила поддержку от Microsoft при доведении "до ума" IndexedDB в виде совместной разработки стандарта IndexedDB 2.0. В результате, стандарт IndexedDB 2.0 с одной стороны всё ещё не дотягивает до старого Web SQL по части запросов к данным (в ней всё ещё нельзя в одном SQL запросе автоматически соединить несколько таблиц, а можно только вручную с помощью курсора данных), однако превосходит последний по части совместимости с PWA приложениями (поддерживает работу внутри Web Worker и  Service Worker).

В результате мы получили пусть и ограниченную новую реляционную СУБД для Web приложений, но за то полностью работоспособную в режиме оффлайн, что позволяет реализовать наиболее сложные задачи с помощью PWA приложений, как если бы они были родными десктопными приложениями для Android или Windows.

Вместо послесловия

Компания Google за последний год просто превзошла всех в области СУБД, чему можно только радоваться. Однако, выпуск ей уже второй за последний месяц новой СУБД, заставляет сильно задуматься над приоритетами, т.к. глубоко изучить их все с такой скоростью уже проблематично любому разработчику, даже самому большому любителю баз данных.

В связи с выше изложенным, если вы что-то пропустили, приведу текущий список приоритетов в области реляционных СУБД, с которых стоит начать изучение и использование на практике, для всех основных применений по части Web приложений:

1) IndexedDB 2.0 - лучшая клиентская СУБД, уже бесплатно встроенная в Google Chrome, и далее будет встроена во все остальные браузеры, когда у их произхводителей дойдут руки. Она полностью совместима со всеми онлайн и оффлайн режимами работы и даже умеет работать асинхронно с помощью promise надстроек.

2) Отдельный сервер mySQL - лучшая серверная СУБД, доступная в Google Cloud Platform бесплатно в рамках Free Tier Limits. Совместима со всеми стандатными инструментами, а также с Google Data Studio и скоро будет совместима с приложениями G Suite (дата официального анонса пока не определена). В рамках бесплатных лимитов обладает серьёзными ограничениями по количеству сессий и размеру баз данных, но для школьного сайта и прочих мелких надобностей точно хватит.

3) Google Cloud SQL for mySQL - обрачный сервис в составе Google Cloud Platform на базе СУБД mySQL, который совместим со всеми интерфейсами mySQL, а также с G Suite. Сервис платный (от $10 в месяц за минимальный объём баз данных в 3 ГБайт), но с учётом его минимальной цены вполне посильный для любой организации и даже частных лиц для любых бизнес нужд, кроме глобальных.

4) Google Spanner - первая полностью облачная СУБД вообще и в Google Cloud Platform в частности, представляющая собой реальный GEO-кластер с ничтожной задержкой (прямой commit каждой транзакции из любой точки планеты Земля, без 3PC, пессимистичной блокировки записей и суррогатов в виде последующего merge). Google Spanner готов принять любой объём данных, который вы только сможете найти (от $900 в месяц за минимальную конфигурацию). Рекомендуется для любых глобальных проектов, требующих фиксации данных в реальном масштабе времени, и больших организаций, где просто очень много реляционных данных.

Комментариев нет: