Make World State View (WSV) backend modular and add new in-process WSV backend provider.
HL Iroha currently uses a separate relational database (PostgreSQL) to store its state. That requires another process to start – so it takes resources and is not very efficient. This project aims to switch from a separate database to a module that would allow storing the state within the same process.
Also, the project aims to not only make the architecture neat but also on improving performance positively. The newly selected database must provide good in-memory cache with disk backed persistent state that can be reliably saved when the block is committed. Also, the database must able to hold big volumes of data which is larger than the RAM can hold.
- Research on what key-value storage solution would work the best for storing WSV
- Approve the researched solution
- Refactor the code to decouple the storage and allow an easier way of changing it
- Execute the approved solution
- Research and analyse the performance affected by the decoupled storage.
- Create a configuration parameter to allow backward compatibility
- Complete the Research of finding the best storage solution and also get it approved
- Implement RocksDB block Storage.
- Write tests once Implemented solution is approved.
- Code Refactoring and Performace Analysis
- Code Review and Testing
- Documentation and discuss the future plans
- Refactored code allowing connection to different storage solutions
- New storage solution embedded into the program itself
- Analysis of the performance before and after the change