Zannick/logic-graph

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

Aperta

#222 aperta il 18 feb 2025

 (14 commenti) (0 reazioni) (0 assegnatari)Rust (0 fork)auto 404
enhancementhelp wanted

Metriche repository

Star
 (4 stelle)
Metriche merge PR
 (Metriche PR in attesa)

Descrizione

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.

Guida contributor