https://github.com/keymetrics/interdb
:construction_worker: Local and shared database
https://github.com/keymetrics/interdb
database discovery js key-value shared-database
Last synced: 16 days ago
JSON representation
:construction_worker: Local and shared database
- Host: GitHub
- URL: https://github.com/keymetrics/interdb
- Owner: keymetrics
- Created: 2018-01-17T16:07:54.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-09-23T13:37:57.000Z (over 6 years ago)
- Last Synced: 2025-03-28T11:03:35.763Z (29 days ago)
- Topics: database, discovery, js, key-value, shared-database
- Language: JavaScript
- Homepage:
- Size: 108 KB
- Stars: 6
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# InterDB
InterDB is a shared database with auto discovery.
## Example
```javascript
const interdb = require('interdb')const con = new interdb()
// Global
con.startLocal('./path.local.db') // Start local db only
con.start({
namespace: 'business',
password: 'long-password',
path: './path.db',
localPath: './path.local.db', // optional
identity : {
// Info that will be shared to other dashboards
}
}) // join network
con.stop() // exit network// Bus
con.clients.*
// Refer to Synapsis documentation (https://github.com/Unitech/synapsis)// local DB
con.localDb.put('key', 'value', cb) // put new data in existing key or create it
con.localDb.push('key', 'value', cb) // push data in existing key if it's an array or create an array with value in first index
con.localDb.del('key', cb) // delete key
con.localDb.get('key') // get value from key
con.localDb.updateAll({ data: {} }, cb) // Overwrite database
con.localDb.getLastUpdate() // Get timestamp of latest action
con.localDb.save(cb) // save changes (use if you modify con.localDb without API)// Shared DB (all of local API but broadcast changes over network)
con.db.put('key', 'value', cb) // put new data in existing key or create it
con.db.push('key', 'value', cb) // push data in existing key if it's an array or create an array with value in first index
con.db.del('key', cb) // delete key
con.db.get('key') // get value from key
con.db.updateAll({ data: {} }, cb) // Overwrite database
con.db.getLastUpdate() // Get timestamp of latest action
con.db.save(cb) // save changes (use if you modify con.db without API)
```## Database structure
```json5
{
lastUpdate: "",
data: {}
}
```## Communication structure
### Normal
Host A <-> Host B <-> Host C
^----------------------^### Problem
Host A <-> Host B <-> Host C