https://github.com/entropic-dev/eos-spike
a spike at an object store
https://github.com/entropic-dev/eos-spike
Last synced: about 2 months ago
JSON representation
a spike at an object store
- Host: GitHub
- URL: https://github.com/entropic-dev/eos-spike
- Owner: entropic-dev
- Created: 2019-12-01T22:53:04.000Z (over 5 years ago)
- Default Branch: latest
- Last Pushed: 2020-02-25T04:05:07.000Z (about 5 years ago)
- Last Synced: 2024-10-29T21:05:47.550Z (6 months ago)
- Language: Rust
- Size: 105 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# object-store
The goals of this module are as follows:
- Storing objects in a content addressable form
- Allowing the preferred content address hash to be "upgraded" (e.g.: sha256 -> sha512)
- Safely allowing multiple concurrent writers
- Allowing fast object presence checks
- Allowing use in JS (via WASM)
- Allowing fast object reads
- Iterating over the objects contained in the store
- Consistency:
- reads can be inconsistent (it's okay to read something, decide to fetch it, and then come back to find out it's already there)
- writes must be atomic (content cannot be put in place until it's fully baked)
- Optimize for read performance over write performance
- writes happen once per unique content encounter
- reads happen multiple times every time the node program executes
- Older versions of files may become unused over timePrior art:
- [Package Distribution](https://gist.github.com/jcoglan/64cf9d3f9a4e25092ac132bd72b63491) by jcoglan
- [Package Syncing](https://gist.github.com/chrisdickinson/579aeccf0b304aac2b8891e36849c98e) by chrisdickinson---
# what types of objects do we have?
## Immutable, content-addressable:
- **Blobs:** raw content
- **Versions:** versions of a package, storing maps to blobs
- package name
- version name
- dependencies
- creation date
- files (a map of files at versions)
- **Event:** Cryptographically signed event representing a package mutation
- version
- date
- origin
- auth add
- auth rm
- yank a version
- unyank a version## Mutable:
- Toplevel packages
- List of available package-versions
- Per-registry representations of package-versions (probably not stored here)
- These contain rendered readmes/file contents