Open lidel opened 9 months ago
hi, I want try implement this feature 😄
Triage note:
Triage notes:
- we need to figure out which pebble settings are worthy exposing via config, prior art in ipfs-cluster will likely be a good starting point
Expose as much as possible because chances are defaults are never right for everyone.
@hsanjuan Here is the subset of pebble options that I decided to make configurable.
This decision is based on what CockroachDB configures as pebble defaults, and based on what pebble tuning parameters were useful for optimizing IPNI's use of pebble.
@lidel I want to stop using ipfs-ds-convert
. There should instead be a way to export all data from kubo instance and import it into another. This would free us from ever having to write a conversion for another datastore.
Maybe it could work something like this:
oldipfs export --repo-dir=~/.ipfs_prev --json --stdout | ipfs import --json
@gammazero replacing ipfs-ds-convert
with ipfs repo export|import
sounds very sensible, will be useful for people running custom datastores as well.
FYSA filled https://github.com/ipfs/ipfs-ds-convert/issues/50 to track sunsetting ipfs-ds-convert
(i'll do it shortly, taking it off our plate)
@hsanjuan Here is the subset of pebble options that I decided to make configurable.
This decision is based on what CockroachDB configures as pebble defaults, and based on what pebble tuning parameters were useful for optimizing IPNI's use of pebble.
I had a quick look. Pebble defaults are quite conservative but should be ok for home use. I had issues with FormatMajorVersion
errors during pebble upgrades: https://github.com/ipfs-cluster/ipfs-cluster/pull/2019/files . When not explicit, the current default is used. Sometimes ratcheting the database after an upgrade fails if you jumped too many pebble releases in-between.
Added FormatMajorVersion
to the TODO at the top of the issue + reopening to track next steps.
TODO
/blocks
(blockstore)FormatMajorVersion
and write docs in docs/datastores.md#pebbleds ?KUBO_ALLOW_DEPRECATED_BADGERV1=true
is set in env – creates friction, forcing people to noticeDescription
Summary
Include pebble as built-in plugin. It provides meaningful alternative to leveldb as the datastore, and may be better than badger1 as well.
Background
It is 2024, and we still only have flatfs, leveldb and necromancy-level badgerv1 (!) as datastore options.
We got positive feedback about pebble, some examples:
https://ipfscluster.io/documentation/guides/datastore/
https://github.com/ipfs/go-ds-pebble/issues/29:
Right now, to use go-ds-pebble one needs to build external plugin.
Proposed change
Include https://github.com/ipfs/go-ds-pebble in standard kubo build, just like we do with legacy badger1.
This will