PouchDB adapter using ReactNative SQLite as its backing store
Switch branches/tags
Nothing to show
Clone or download
Latest commit 6d00eb9 Jun 12, 2017
Permalink
Failed to load latest commit information.
lib Remove pouchdb-utils dependency Jun 12, 2017
.gitignore Initial commit Dec 20, 2016
LICENSE Upgrade PouchDB and Add bulkDocs benchmark Jun 9, 2017
README.md Add changelog Jun 12, 2017
package.json 1.0.3 Jun 12, 2017

README.md

pouchdb-adapter-react-native-sqlite

PouchDB adapter using ReactNative SQLite as its backing store.

Why?

SQLite storage performs much faster than AsyncStorage, especially with secondary index. Here is benchmark results:

1) allDocs speed min max mean
AsyncStorage 72ms 94ms 77ms
SQLite 27ms 39ms 28ms
2) query speed min max mean
AsyncStorage 1,075ms 1,117ms 1,092ms
SQLite 33ms 39ms 35ms
  • Device: iPhone 6s
  • Documents: 434
  • Update seq: 453
  • Iterations: 100
  • Used options: { include_docs: true }

On Simulator

  • Device: iPad Pro 9.7" (Simulator) - iOS 10.3.2
  • Documents: 5000
3) bulkDocs speed total mean
AsyncStorage 25.821ms 5.16ms
SQLite 22.213ms 4.44ms
4) allDocs speed total mean
AsyncStorage 189,379ms 37.87ms
SQLite 30,527ms 6.10ms
  • allDocs options: { include_docs: true, attachments: true }
  • Using this test script

Prerequisites

Usage

Install from npm:

npm install pouchdb-react-native pouchdb-adapter-react-native-sqlite --save
react-native install react-native-sqlite-2

Then import it, notify PouchDB of the plugin, and initialize a database using the react-native-sqlite adapter name:

import PouchDB from 'pouchdb-react-native'
import SQLite from 'react-native-sqlite-2'
import SQLiteAdapterFactory from 'pouchdb-adapter-react-native-sqlite'

const SQLiteAdapter = SQLiteAdapterFactory(SQLite)
PouchDB.plugin(SQLiteAdapter)
const db = new PouchDB('mydb.db', {adapter: 'react-native-sqlite'});

Changelog

  • 1.0.3
    • Remove pouchdb-utils dependency
  • 1.0.2
    • Upgrade pouchdb-util & pouchdb-adapter-websql-core to 6.2.0
    • Update benchmark result
  • 1.0.1
    • Remove unnecessary console output
  • 1.0.0
    • Initial release