Skip to content

A synchronized data store between connected Node.js applications

Notifications You must be signed in to change notification settings

jpillora/pnode-store

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

In Development


Peer Store

A peer-to-peer data store using dnode

Features

  • Fast
    • All data is transfered over dnode
    • Achieve about 1.2k replications/sec
  • Replicate mutating operations
  • Connections automatically recover
    • Status pings and reconnects are controlled by upnode
  • Create smart data buckets for control over replication
    • Prefills buckets with peer data
  • Implement your own bucket types
    • Default bucket type is a plain object (pure memory)
    • lru-cache bucket type is operational so you may set size and TTL.
    • LevelDB bucket type in progress...
  • Express session store built-in

Installation

npm install peer-store

Usage

Server A at 10.0.2.1:

var PeerStore = require("peer-store");

var store = new PeerStore({
  peers: ['10.0.2.2'];
});

store.set('foo',42);

Server B at 10.0.2.2:

var PeerStore = require("peer-store");

var store = new PeerStore({
  peers: ['10.0.2.1'];
});

store.set('bar',7);

On both Sever A and B:

store.getAll(function(data) {
  console.log(data); // { foo: 42, bar: 7 } 
});

Express/Conect session store

In addition to the above, do:

app.use(express.session({
  store: store.sessionStore(),
  secret: 'secr3t'
}));

Now all your sessions are magically shared

API

Todo...

Issues

dnode depends on node-gyp, so in order to npm install on Windows, you'll need to follow the node-gyp Installation guide. Unix and Mac requires python and make so it should just work.

Quick windows links:

Credits

Most of the work is being done by substack's dnode

About

A synchronized data store between connected Node.js applications

Resources

Stars

Watchers

Forks

Packages

No packages published