Persistent predicates based on RocksDB

Just to give some idea of what I am doing with library(persistency).

The use case is for parsing biological databases into facts. Once the fact file is created and the data is coherent it is converted into a SWI-Prolog Quick Load File (QLF) at which point there is no need for a non-Prolog datastore. Since QLF files loads large Prolog files fast (ref), there is no need for further optimizations for this use case.

As these database are typically only updated on a monthly basis or need to have the data loaded on a monthly basis, transactional processing can be avoided.

Currently library(persistency) combined with QLF fits well with my use case.


Personal notes

As of 07/10/2022 the only way to effectively work persistent predicates based on RocksDB is to use specific Git commits of the source.

Commits · SWI-Prolog/swipl-devel · GitHub
Commits · JanWielemaker/rocksdb · GitHub
Commits · JanWielemaker/rocks-predicates · GitHub
Commits · facebook/rocksdb · GitHub


Currently building specifics.

07/10/2022
OS: Ubuntu 22.04 LTS
SWI-Prolog: Install via PPA development version 8.5.14
RocksDB pack commit: e253458
RocksDB commit: a9565ccb2
rocks-predicates commit: 3071007