Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mikeal/dkv
Decentralized key-value store running on IPFS
https://github.com/mikeal/dkv
Last synced: 24 days ago
JSON representation
Decentralized key-value store running on IPFS
- Host: GitHub
- URL: https://github.com/mikeal/dkv
- Owner: mikeal
- Created: 2020-10-08T03:40:39.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2020-10-19T04:29:37.000Z (about 4 years ago)
- Last Synced: 2024-10-07T15:41:47.261Z (about 1 month ago)
- Language: JavaScript
- Size: 16.6 KB
- Stars: 55
- Watchers: 3
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# DKV (Decentralized Key-Value Store)
DKV is a decentralized graph store built on IPFS.
```js
import IPFS from 'ipfs'
import DKV from 'dkv'const ipfs = await IPFS.create()
let store = await DKV.empty(ipfs)
store = await store.set('mykey', { hello: 'world' })store.id // 'bafyreibbbjhk7fnxplcc6fqb24jctxffgxoqv65466gbx73n3jbqyzn3ru'
await store.get('mykey') // { hello: 'world' }
```Every mutation (`set()`, `del()`) returns a new instance because every
mutation creates a new immutable state with a unique `id` (CID).Since the data is accessible over IPFS it is shared in a p2p network
and other peers can access the data using the id of the store (`store.id`).```js
let store = DKV.from(ipfs, 'bafyreibbbjhk7fnxplcc6fqb24jctxffgxoqv65466gbx73n3jbqyzn3ru')
```## links
DKV offers a simple interface for storing key/value pairs. Values
can include links to other values recursively, giving you the
ability to create complex graphs that de-duplicate commonly
linked data.```js
let store = await DKV.empty(ipfs)
const pizza = await store.link({ type: 'food', name: 'pizza' })
store = await store.set('bob', { type: 'person', name: 'bob', favoriteFoor: pizza })const bob = await store.get('bob')
await bob.favoriteFood() // { type: 'food', name: 'pizza' }
```# API
## DKV.empty(ipfs, pin=true)
## DKV.from(ipfs, cid, pin=true)
## DKV.fromEntries(ipfs, entries, pin=true)
## store.get(key)
## store.set(key, value)
## store.set(map)
## store.del(key)
## store.del(keys)