Представлен (https://pouchdb.com/2017/12/16/pouchdb-6.4.0.html) релиз документ-ориентированной СУБД PouchDB 6.4 (https://pouchdb.com/), представляющей собой вариант СУБД Apache CouchDB, написанный на языке JavaScript и работающий внутри браузера. PouchDB совместим с CouchDB на уровне API для хранения и выборки данных. Модель хранения повторяет CouchDB и обеспечивает средства разрешения конфликтов. Код распространяется (https://github.com/pouchdb/pouchdb) под лицензией Apache 2.0. Размер сжатого архива с PouchDB занимает около 50 Кб.PouchDB позволяет создавать web-приложения, способные полноценно функционировать в offline-режиме и реплицировать данные из стационарных БД на базе CouchDB. Иными словами, при отсутствии сетевого соединения web-приложение может накапливать изменения в локальном хранилище на базе PouchDB, а после выхода в сеть синхронизировать изменения с внешним сервером, поддерживающим API CouchDB, или обеспечивать синхронизацию данных между клиентами.
PouchDB может работать во всех современных браузерах, а также применяться в серверных решениях на базе Node.js и в обособленных клиентских приложениях на базе Cordova/PhoneGap, NW.js и Electron.
PouchDB не привязана к web-фреймворкам, но отдельно предоставляет (https://pouchdb.com/external.html#framework_adapters) обвязки для различных фреймворков, в том числе для Angular, React, Ember и Backbone. Имеется даже надстройка Python-PouchD (https://python-pouchdb.marten-de-vries.nl/) для использования PouchDB в проектах на языке Python и реализация (https://github.com/pouchdb/pouchdb-server) обособленного CouchDB-совместимого сервера. Для локального хранения данных в браузерах задействован API IndexedDB (http://caniuse.com/#feat=indexeddb), а при его отсутствии WebSQL (http://caniuse.com/#feat=sql-storage). При обособленной работе и использовании с Node.js для хранения используется LevelDB или SQLite.
Основные новшества (https://github.com/pouchdb/pouchdb/releases/tag/6.4.0):
- В функции allDocs() и query() добавлен флаг update_seq (https://github.com/pouchdb/pouchdb/issues/6230), по аналогии с CouchDB (http://docs.couchdb.org/en/2.0.0/api/database/bulk-api.html) включающий в указание в ответе значения идентификатора последовательности;
- Добавлено появившееся в CouchDB 2.0 свойство "pending (https://github.com/pouchdb/pouchdb/issues/5710)" для передачи сведений о числе ожидающих репликации документов;
- Обеспечено выполнение пакетного запроса ключей через allDocs в рамках одной транзакции indexedDB и WebSQL. В Chrome подобная оптимизация ускорила выполнение allDocs до 8 раз, а в Friefox до 2 раз;
- Добавлена возможность сохранения cookie при работе под управлением Node.js.
URL: https://pouchdb.com/2017/12/16/pouchdb-6.4.0.html
Новость: http://www.opennet.me/opennews/art.shtml?num=47760