This document describes the different possible values for the Datastore.Spec
field in the ipfs configuration file.
Stores each key value pair as a file on the filesystem.
The shardFunc is prefixed with /repo/flatfs/shard/v1
then followed by a descriptor of the sharding strategy. Some example values are:
/repo/flatfs/shard/v1/next-to-last/2
- Shards on the two next to last characters of the key
/repo/flatfs/shard/v1/prefix/2
- Shards based on the two character prefix of the key
{
"type": "flatfs",
"path": "<relative path within repo for flatfs root>",
"shardFunc": "<a descriptor of the sharding scheme>",
"sync": true|false
}
NOTE: flatfs should only be used as a block store (mounted at /blocks
) as the
current implementation is not complete.
Uses a leveldb database to store key value pairs.
{
"type": "levelds",
"path": "<location of db inside repo>",
"compression": "none" | "snappy",
}
Uses badger as a key value store.
syncWrites
: Synchronize every write to disk.truncate
: Truncate the DB if a corrupted sector is found (otherwise Badger won't start). This option is always set totrue
in Windows ifsyncWrites
is set.
{
"type": "badgerds",
"path": "<location of badger inside repo",
"syncWrites": true|false,
"truncate": true|false,
}
Allows specified datastores to handle keys prefixed with a given path. The mountpoints are added as keys within the child datastore definitions.
{
"type": "mount",
"mounts": [
{
// Insert other datastore definition here, but add the following key:
"mountpoint": "/path/to/handle"
},
{
// Insert other datastore definition here, but add the following key:
"mountpoint": "/path/to/handle"
},
]
}
This datastore is a wrapper that adds metrics tracking to any datastore.
{
"type": "measure",
"prefix": "sometag.datastore",
"child": { datastore being wrapped }
}