Closed
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
bufferWrap
to supportArrayBuffer
,Uint8Array
andBuffer
#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
AbstractLevel
It 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 makeDB
just an implementation of theabstract-level
interface. - DB would then be a specialised
classic-level
that sets up root sublevels ofdata
,transactions
, andindex
and 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
index
root 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
- ...
- ...
- ...