Zannick/logic-graph

Replace rocksdb with relational database (eg sql) for queue and state db

Offen

#222 geöffnet am 18.02.2025

 (14 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)Rust (0 Forks)auto 404
enhancementhelp wanted

Repository-Metriken

Stars
 (4 Sterne)
PR-Merge-Metriken
 (PR-Metriken ausstehend)

Beschreibung

Having a relational database with indexes might be better for #141. The new structure I'm envisioning would keep the statedb and use that as the queue by way of indexes:

Mode state progress score elapsed remaining hist prev next in-memory-queue won
lookup = x
insert ... ... ... ... ... ... ... ... ... ...
update = x set min set set set set
process = x set set false
evict = x set true
retrieve = x sort sort sort = false, set true
recover set false if true
solutions sort = true
  • Our statedb lookups are for data at the primary key (state).
  • As we process states, we insert the new states (or update the ones we've found faster routes to), and update the processed states with the next steps.
  • Evicting from the in-memory-queue simply flips the bit.
  • Retrieving states looks for states with the in-memory-queue bit set to false (and then sets them to true)
  • On recovery, we can either retrieve all the elements marked as being in the memory queue, or set them all back to false and perform a retrieve.
  • And we can retrieve solutions directly on recovery as well.

Contributor Guide