Revising SRFI-167: Ordered Key-Value Store #83

Open
opened 3 months ago by amirouche · 3 comments

I am revising SRFI-167:

  • Do not feature the ability to swap backing storage by mocking Scheme generics;
  • Do support cursor interface, because it is easier to explore the database that way, and it is possible to implement on-top range queries;
  • Do support transaction variables pseudo-parameters that were removed from SRFI-167 that is called make-okvs-transaction-variable;
  • Fix hooks;
  • Do not support configurable semantic of transactions, and leave it unspecified;
  • Do support sizing metadata: max key, max value, key range, and bytes count;
  • Simplify specification by making okvs, transaction and cursor satisfy the predicate okvs-handle?; all operation on the database specify that they take a database handle;
  • Do neutralize the specification wording to be less enthusiastic.

New systems:

The current spec is available at https://hyper.dev/p/okvs/

I am revising [SRFI-167](https://srfi.schemers.org/srfi-167/): - Do not feature the ability to swap backing storage by mocking Scheme generics; - Do support cursor interface, because it is easier to explore the database that way, and it is possible to implement on-top range queries; - Do support transaction variables pseudo-parameters that were removed from SRFI-167 that is called `make-okvs-transaction-variable`; - Fix hooks; - Do not support configurable semantic of transactions, and leave it unspecified; - Do support sizing metadata: max key, max value, key range, and bytes count; - Simplify specification by making okvs, transaction and cursor satisfy the predicate `okvs-handle?`; all operation on the database specify that they take a database handle; - Do neutralize the specification wording to be less enthusiastic. New systems: - https://dbmx.net/tkrzw/ - https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API - https://github.com/amirouche/lbst The current spec is available at https://hyper.dev/p/okvs/
Poster

I improved SRFI-168 (nstore) by making use of the value part. On a related note, I figured some problems with my implementation of the versioned nstore that never made it into the SRFI process.

My plan is to re-implement LBST portably with Scheme, and demonstrate the use of the API before requesting another SRFI.

I improved SRFI-168 (nstore) by making use of the value part. On a related note, I figured [some problems with my implementation of the versioned nstore](https://hyper.dev/blog/2021/vnstore2/) that never made it into the SRFI process. My plan is to re-implement LBST portably with Scheme, and demonstrate the use of the API before requesting another SRFI.
Poster

Attached the spec for backup purpose.

Attached the spec for backup purpose.
10 KiB
Poster

I copied the spec, and changed a few things at [0]. There is the beginning of a new sample implementation that is memory-based at [1], also attached here, inspired from Log-Balanced Search Tree [3].

[0] 899ae96e8b
[1] https://github.com/amirouche/lbst/pull/5
[3] It is missing the optimization of too-big?

I copied the spec, and changed a few things at [0]. There is the beginning of a new sample implementation that is memory-based at [1], also attached here, inspired from Log-Balanced Search Tree [3]. [0] https://git.sr.ht/~amirouche/pre-srfi-revised-okvs/commit/899ae96e8bf56d08ef3dcc24d70acc8e63fbad2a [1] https://github.com/amirouche/lbst/pull/5 [3] It is missing the optimization of `too-big?`
Sign in to join this conversation.
Loading…
There is no content yet.