-
Notifications
You must be signed in to change notification settings - Fork 0
Labels
developmentStandard developmentStandard developmentepicBig issue with multiple subissuesBig issue with multiple subissuesr&d:polykey:core activity 1Secret Vault Sharing and Secret History ManagementSecret Vault Sharing and Secret History Management
Description
Specification
The abstract-level https://github.com/Level/abstract-level is a new foundation of LevelDB. Upgrading to this will help us resolve all other issues in DB.
- Use
bufferWrapto supportArrayBuffer,Uint8ArrayandBuffer#3 - abstract-level supports it directly - Integrate DB into the level db interface so db levels are the same as db #8 - Our DB abstraction should be rebuilt as an abstract-level layer, that is a class extending
AbstractLevelIt will still need to useclass DB extends AbstractLevel { ... }classic-level(which is just leveldown atm) in NodeJS because NodeJS doesn't support indexed DB atm. But this should then basically makeDBjust an implementation of theabstract-levelinterface. - DB would then be a specialised
classic-levelthat sets up root sublevels ofdata,transactions, andindexand performs semi-transparent encryption & decryption (since it doesn't have a block level yet). - DB would then return sublevels as wrapped DBs as well...
- Implement True Snapshot Isolation for LevelDB #4 Should already be resolved, since we end up using
iterator()for read-committed level transactions, and true snapshots aren't really needed. - Integrate Automatic Indexing into DB #1 becomes possible now that we have a better idea of what kind of indexing needs we need, and we can put all the index data under the
indexroot level
#5 still cannot be solved until IDB becomes available, then we can use browser-level or level-js and have the transparent encryption be done at the block level. Or done at the C++ level inside leveldb, or rocksdb.
Wait until level has released version 8, although this can be started now, since we may not need to use the level package at all. The only dependencies of js-db may be abstract-level and classic-level.
Additional context
- https://github.com/Level/abstract-level/blob/main/UPGRADING.md
- https://github.com/Level/community#what-is-abstract-level
- Add support for IndexedDB denoland/deno#1699 - Deno may have IDB one day
- Fine Grained Concurrency Control Standardisation Polykey#294 - Expected downstream usage of DB
- A way to get a deeply nested sublevel in one-go Level/subleveldown#112 - Getting deeply nested sublevel in one go
Tasks
- ...
- ...
- ...
Sub-issues
Metadata
Metadata
Assignees
Labels
developmentStandard developmentStandard developmentepicBig issue with multiple subissuesBig issue with multiple subissuesr&d:polykey:core activity 1Secret Vault Sharing and Secret History ManagementSecret Vault Sharing and Secret History Management