seneca-shard-store

Sharding for Seneca

Usage no npm install needed!

<script type="module">
  import senecaShardStore from 'https://cdn.skypack.dev/seneca-shard-store';
</script>

README

seneca-shard-store

Node.js seneca data storage module that uses multiple stores

This module is a plugin for the Seneca framework. It provides a storage engine that uses multiple stores, called shards. The data is divided equally at time of creation, using an id built by the sharder module.

Support

If you're using this module, feel free to contact me on twitter if you have any questions! :) @matteocollina

Quick example

This example uses two jsonfile-store.

var seneca = require('seneca')()
si.use(require('seneca-jsonfile-store'),{
  map: {
    'store1/-/-': '*'
  },
  folder: __dirname + '/db1'
})

si.use(require('seneca-jsonfile-store'),{
  map: {
    'store2/-/-': '*'
  },
  folder: __dirname + '/db2'
})

si.use(require('..'),{
  shards: {
    1: {
      zone: 'store1',
      append: true
    },
    2: {
      zone: 'store2',
      append: true
    }
  }
})

seneca.ready(function(){
  var apple = seneca.make$('fruit')
  apple.name  = 'Pink Lady'
  apple.price = 0.99
  apple.save$(function(err,apple){
    console.log( "apple.id = "+apple.id  )
  })
})

Install

npm install seneca
npm install seneca-shard-store

Usage

You don't use this module directly. It provides an underlying data storage engine for the Seneca entity API:

var entity = seneca.make$('typename')
entity.someproperty = "something"
entity.anotherproperty = 100

entity.save$( function(err,entity){ ... } )
entity.load$( {id: ...}, function(err,entity){ ... } )
entity.list$( {property: ...}, function(err,entity){ ... } )
entity.remove$( {id: ...}, function(err,entity){ ... } )

Test

cd test
mocha shard.test.js --seneca.log.print

Acknowledgements

This project was kindly sponsored by nearForm.

License

MIT