
Security News
TypeScript is Porting Its Compiler to Go for 10x Faster Builds
TypeScript is porting its compiler to Go, delivering 10x faster builds, lower memory usage, and improved editor performance for a smoother developer experience.
orbit-db-mfsstore
Advanced tools
Key-Value database for orbit-db backed by IPFS MFS.
A key-value database backed by the IPFS Mutable File System. Also allows indexing and searching by non-primary indexes. Unlike other orbit-db stores it does not load the entire dataset into memory. Each store uses a schema and when records are inserted we build btree indexes. They get built and stored locally.
Used in orbit-db.
npm install orbit-db ipfs orbit-db-mfsstore
First, create an instance of OrbitDB:
const MfsStore = require('orbit-db-mfsstore')
const IPFS = require('ipfs')
const OrbitDB = require('orbit-db')
const ipfs = new IPFS()
const orbitdb = await OrbitDB.createInstance(ipfs)
Add custom datastore type
OrbitDB.addDatabaseType("mfsstore", MfsStore)
Create a datastore with a schema. In this example we're saving baseball players. We'll add 4 different indexed fields. Indexes and can unique.
store = await orbitdb.open("baseballplayers", {
create: true,
type: "mfsstore",
schema: {
name: { unique: false },
currentTeam: { unique: false },
battingHand: { unique: false },
throwingHand: { unique: false }
}
})
Add a record and retreive it by the primary key
//Save it
await store.put(101, {
name: "Andrew McCutchen",
currentTeam: "PIT",
battingHand: "R",
throwingHand: "R"
})
//Retreive it
let player = await store.get(101)
Now we're going to add a few more players
await store.put(102, {
id: 102,
name: "Pedro Alvarez",
currentTeam: "BAL",
battingHand: "R",
throwingHand: "R"
})
await store.put(103, {
id: 103,
name: "Jordy Mercer",
currentTeam: "PIT",
battingHand: "L",
throwingHand: "R"
})
await store.put(104, {
id: 104,
name: "Doug Drabek",
currentTeam: "BAL",
battingHand: "L",
throwingHand: "R"
})
Now retreive the values by the secondary indexes.
//Get players who play for PIT
let teamPIT = await store.getByIndex("currentTeam", "PIT", "desc", 0, 100)
//Get players who who bat right handed.
let battingR = await store.getByIndex("battingHand", "R", "desc", 0, 100)
See orbit-db's API Documenations for full details.
An MFSStore has the following additional functions:
//Returns the recordset starting at the first record. Returns 100 records.
let result = await store.list(0, 100)
//Returns the recordset of records where the currentTeam attribute is set to "PIT".
//Sorts the records in descending order and starts at the first record.
//Returns 100 records.
let result = await store.getByIndex("currentTeam", "PIT", "desc", 0, 100 )
let count = await store.count()
If you think this could be better, please open an issue!
Please note that all interactions in @orbitdb fall under our Code of Conduct.
MIT ©️ 2016-2018 Protocol Labs Inc., 2018 Haja Networks Oy
FAQs
MFS backed Key-Value Store for orbit-db
We found that orbit-db-mfsstore demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
TypeScript is porting its compiler to Go, delivering 10x faster builds, lower memory usage, and improved editor performance for a smoother developer experience.
Research
Security News
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
Security News
Socket CEO Feross Aboukhadijeh discusses the open web, open source security, and how Socket tackles software supply chain attacks on The Pair Program podcast.