Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update dependency orbit-db to ^0.26.0 #98

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

renovate[bot]
Copy link

@renovate renovate bot commented Oct 3, 2019

This PR contains the following updates:

Package Type Update Change
orbit-db dependencies minor ^0.21.4 -> ^0.26.0

Release Notes

orbitdb/orbit-db

v0.26.0

Compare Source

Support for js-ipfs 0.50.2 and go-ipfs 0.6.0

v0.25.3

Compare Source

v0.25.2

Compare Source

v0.25.1

Compare Source

Includes

v0.25.0

Compare Source

v0.24.2

Compare Source

v0.24.1

Compare Source

JS-IPFS 0.44 Support

Until now the newest versions of js-ipfs were not supported. This was primarly because of js-ipfs api's move to async iteration starting in version 0.41. Now js-ipfs versions 0.41-0.44 are supported.

Relevant PRs:

Store Operation Queue

All included stores (and any store extending orbit-db-store v3.3.0+) now queues operations. Any update sent to a store is executed sequentially and the store's close method now awaits for the queue to empty.

Relevant PRs:

Docstore putAll Operation

A new method was added to the docstore named 'putAll'. This method allows for multiple keys to be set in the docstore in one oplog entry. This comes with some significant performance benefits. Something to note is any nodes running an older version of the docstore will ignore any changes made by putAll operations.

Relevant PRs:

Oplog Events

It is now possible to listen for specific store operations as they are added to the store. To learn more about how to use this you can review the documentation and look at event log.op.${operation}.

Relevant PRs:

orbit-db tests

Tests now use orbit-db-test-utils package to deduplicate test utilities. It had already been used in most subpackages like orbit-db-store but now it's used in the orbit-db repo!

Relevant PRs:

orbit-db-store sync method

A method on orbit-db-store named sync is now an async method and only resolves after oplog heads have been added.

Relevant PRs:

Electron Renderer FS Shim

Fixes a bug related to the native filesystem when used in electron.

Relevant PRs:

Re-exports

Now import AccessControllers, Identities, and/or Keystore modules from OrbitDB with object destructuring like so:

const { AccessControllers, Identities, Keystore } = require('orbit-db')

Relevant PRs:

v0.24.0

Compare Source

v0.23.1

Compare Source

v0.23.0

Compare Source

Performance Improvements

Performance improvements have been made to both writing and loading.

Our benchmarks show an increase of 2-3x loading and writing speeds! 🎉

  v0.22.0
  Starting IPFS...
  DB entries: 1000
  Writing DB...
  writing took 3586 ms
  Loading DB...
  load took 1777 ms

  v0.23.0
  Starting IPFS...
  DB entries: 1000
  Writing DB...
  writing took 1434 ms
  Loading DB...
  load took 802 ms

  // Writing improved: ~2.5x
  // Loading improved: ~2.2x

The speed-up between the versions is more pronounced as the size of the database increases:

  v0.22.0
  Starting IPFS...
  DB entries: 10000
  Writing DB...
  writing took 31292 ms
  Loading DB...
  load took 26812 ms

  v0.23.0
  Starting IPFS...
  DB entries: 10000
  Writing DB...
  writing took 10383 ms
  Loading DB...
  load took 5542 ms

  // Writing improved: ~3x
  // Loading improved: ~4.8x

To try out the benchmarks for yourself run node benchmarks/benchmark-load.js

Entry references

Each entry added now contains references to previous entries in powers of 2 distance apart up to a maximum distance of referenceCount (default 32) from it, speeding up both writing and loading and resulting in smaller entry sizes. #​275

Signature Caching

The default keystore and identity-provider now have caches added to speed up verification of entry signtures and identities. See #​53 and #​38

Offline mode

An optional offline flag has bee added which, when set to true, prevents pubsub from starting and messages from being exchanged. This is useful to speed up testing and for when you would like to use your database locally without networking enabled.
To use offline mode, start your IPFS nodes offline (with new IPFS({ start: false })) and create your OrbitDB instance as follows:

const orbitdb = await OrbitDB.createInstance(ipfs, { offline: true, id: 'mylocalid' })

Note that an id will need to be passed if your IPFS node is offline. If you would like to start replicating databases after starting OrbitDB in offline mode, the OrbitDB instance needs to be re-created. See #​726

Pinning and Garbage Collection

OrbitDB does not automatically pin content added to IPFS. This means that if garbage collection is triggered, any unpinned content will be erased. An optional pin flag has been added which, when set to true, will pin the content to IPFS and can be set as follows:

await db.put('name', 'hello', { pin: true })

Note that this is currently experimental and will degrade performance. For more info see this issue.

It is recommended that you collect the hashes of the entries and pin them outside of the db.put/add calls before triggering garbage collection.

v0.22.1

Compare Source

v0.22.0

Up to 10x Performance Increase in Appends 🎉

  • sortFn now at the top level
  • orbit-db-storage-adapter now provides cache and keystore interop for mongo, redis, and any abstract-leveldown
(semi-)Breaking Changes

To improve performance, this release changes the way caches are managed.

Cache Directory Locations

Your cache directory structure will change. There is a migration script that will run upon creating the database.

Old Structure (node.js default):

orbitdb/[OrbitDB ID]/keystore
orbitdb/[DB ID]/db-name/
orbitdb/[DB ID]/db-name1/
orbitdb/[DB ID]/db-name2/

New Structure (node.js default):

orbitdb/[OrbitDB ID]/keystore
orbitdb/[OrbitDB ID]/cache
identityKeysPath is optional, but important!

Read more about what this release includes here.


Renovate configuration

📅 Schedule: At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻️ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by WhiteSource Renovate. View repository job log here.

@renovate renovate bot changed the title Update dependency orbit-db to ^0.22.0 Update dependency orbit-db to ^0.23.0 Dec 14, 2019
@CLAassistant
Copy link

CLAassistant commented Mar 5, 2020

CLA assistant check
All committers have signed the CLA.

@renovate renovate bot changed the title Update dependency orbit-db to ^0.23.0 Update dependency orbit-db to ^0.24.0 Jul 1, 2020
@renovate renovate bot changed the title Update dependency orbit-db to ^0.24.0 Update dependency orbit-db to ^0.25.0 Aug 27, 2020
@renovate renovate bot changed the title Update dependency orbit-db to ^0.25.0 Update dependency orbit-db to ^0.26.0 Oct 26, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants