Выпуск СУБД PouchDB 6.1, реализации CouchDB на JavaScript
Представлен релиз документ-ориентированной БД PouchDB 6.1, представляющей собой расширенный вариант СУБД Apache CouchDB, написанный на языке JavaScript и работающий внутри браузера. Модель хранения повторяет CouchDB и обеспечивает средства разрешения конфликтов. PouchDB совместим с CouchDB на уровне API для хранения и выборки данных. Код распространяется под лицензией Apache 2.0. Размер сжатого архива с PouchDB занимает всего 45 Кб.
PouchDB позволяет создавать web-приложения, способные полноценно функционировать в offline-режиме и реплицировать данные из стационарных БД на базе CouchDB. Иными словами при отсутствии сетевого соединения web-приложение может накапливать изменения в локальном хранилище на базе PouchDB, а после выхода в сеть синхронизировать изменения с внешним сервером, поддерживающим API CouchDB, или обеспечивать синхронизацию данных между клиентами.
PouchDB может работать во всех современных браузерах, а также применяться в серверных решениях на базе Node.js и в обособленных клиентских приложениях на базе Cordova/PhoneGap, NW.js и Electron. PouchDB не привязана к web-фреймворкам, но отдельно предоставляет обвязки для различных фреймворков, в том числе для Angular, React, Ember и Backbone. Имеется даже надстройка Python-PouchD для использования PouchDB в проектах на языке Python и реализация обособленного CouchDB-совместимого сервера. Для локального хранения данных в браузерах задействован API IndexedDB, а при его отсутствии WebSQL. При обособленной работе и использовании с Node.js для хранения используется LevelDB или SQLite.
Новый выпуск примечателен оптимизацией производительности, расширением диагностических сообщений и реализацией режима запросов "latest: true", при котором сервер всегда выдает самую свежую версию документа, независимо от запрошенной ревизии. В новой версии также приведена в порядок и полностью протестирована реализация метода fetch(), предназначенного для использования PouchDB в обработчиках на базе Service Worker, в которых недоступен API XMLHttpRequest.