PostgreSQL database adapter for sharedb. This driver can be used both as a snapshot store and oplog.
Doesn't support queries (yet?).
Moderately experimental. (This drives Synaptograph's backend, and @nornagon hasn't noticed any issues so far.)
Due to the fix to resolve high concurency issues Postgres 9.5+ is now required.
Older versions of this adaptor used the data type json. You will need to alter the data type prior to using if you are upgrading.
ALTER TABLE ops
ALTER COLUMN operation
SET DATA TYPE jsonb
USING operation::jsonb;
ALTER TABLE snapshots
ALTER COLUMN data
SET DATA TYPE jsonb
USING data::jsonb;
In addition, the snapshots
table might have a NOT NULL
constraint on the doc_type
and data
columns that will need to be dropped, since these are set to null when a ShareDB document is deleted via its .del()
method.
ALTER TABLE snapshots
ALTER COLUMN doc_type
DROP NOT NULL;
ALTER TABLE snapshots
ALTER COLUMN data
DROP NOT NULL;
sharedb-postgres
wraps native node-postgres, and it supports the same configuration options.
To instantiate a sharedb-postgres wrapper, invoke the module and pass in your PostgreSQL configuration as an argument or use environmental arguments.
For example using environmental arugments:
var db = require('sharedb-postgres')();
var backend = require('sharedb')({db: db})
Then executing via the command line
PGUSER=dbuser PGPASSWORD=secretpassword PGHOST=database.server.com PGDATABASE=mydb PGPORT=5433 npm start
Example using an object
var db = require('sharedb-postgres')({host: 'localhost', database: 'mydb'});
var backend = require('sharedb')({db: db})
PostgreSQL errors are passed back directly.
Note that version 3.0.0 introduces breaking changes in how you specify connection parameters. See the changelog for more info.