jawn as a wrapper around levelup and hypercore
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 20/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- javascript
- Ambito
- databases, distributed-systems
Direzione di ricerca
Non vengono indicati file, test o punti di ingresso. Inizia esaminando il wrapper dat-tables proposto per levelup e hypercore, quindi chiarisci i limiti dell’MVP e i criteri di accettazione per importazione/esportazione, registrazione del feed, indicizzazione e sincronizzazione prima dell’implementazione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
@ogd @mafintosh as I spec out the basic features for dat-tables, it looks like our hypercore feeds will basically contain a log of CREATE, UPDATE, and DELETE operations. I want to avoid writing an API that unnecessarily duplicates the leveldown API or (gadzooks) ending up with yet another SQL-ish API that nobody wanted. Would it be easier to make levelup more central in the operations and implement a sort of 'smart' log that follows 'put' and 'delete' events emitted by levelup, writing the changes to a hypercore feed?
Assumptions
The key features for an MVP of dat-tables are:
- provide an api for importing & exporting data
- write imported data to a hypercore feed
- track those data in an index (for lookups and in order to distinguish between 'adds' and 'updates')
I had been thinking of the index as a tail of the feed -- always reading operations from the feed (even locally) and applying them to the index accordingly -- but I think that was the wrong approach.
dat-tables as a wrapper around levelup and hypercore
Note: The levelup database always represents the HEAD of your data.
- Wrap levelup: Provide an import/export api that's a transparent wrapper around the levelup api
- Log levelup events to hypercore: During
importoperations, follow 'put' and 'delete' events emitted by levelup. Write all changes to a hypercore feed (ignoreputs that didn't change anything) - Tail the hypercore feed when syncing: When syncing changes from other hypercore hosts, apply those changes from the feed directly to levelup
This lets us focus on making dat-tables support operations like 'checking out' old versions and running diffs against old versions of the data. It also lets us focus on refining the API to support target use cases.
Does this make sense? Am I missing anything?
- Lingua principale
- JavaScript
- Stelle
- 46
- Fork
- 8
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di CodeForPhilly/jawn
-
in progress
CodeForPhilly/jawn#46 · 1 assegnatario ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
CodeForPhilly/jawn#44 ·
-
database tracker
CodeForPhilly/jawn#43 · 5 commenti · 1 assegnatario ·
-
update to hypercore 2.0 Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
CodeForPhilly/jawn#40 · 2 commenti ·
-
Try using hyperkv Apertain progress
CodeForPhilly/jawn#37 · 1 assegnatario ·
Tutte le issue di CodeForPhilly/jawn
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
area-deployment area-integrations triage:bot-seen
Difficoltà 2/5 Mezza giornata Idoneità per principianti 86/100
-
Issue-Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
sugarlabs/musicblocks#8924 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
ArduPilot/ardupilot_wiki#8088 ·
-
[BUG] createTool tools cannot be registered with Mastra when exactOptionalPropertyTypes is enabled Apertacustomer-eng status: needs triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100