Iūdex maintains state on all content to be processed in persisent storage. This includes all prioritization data. The current implementation makes direct use of PostgreSQL features for maximum efficiency:
UniMap
and database rows.SELECT FOR UPDATE
/INSERT
with transaction isolation and
conflict retry for maximum concurrency and throughput. One
transaction for the current order, redirects and references.All PostgreSQL dependencies are isolated in the iudex-da package. This should make it possible to experiment with alternatives such as fully distributed/partitioned NoSQL stores in the future.
Postgresql should be setup with localhost trust access for the “iudex” user (which need not itself have superuser credentials.) An “iudex_test” database is used by tests and is the default for all execution. Setup:
% createuser iudex
% createdb iudex_test -O iudex
% iudex-migrate
If starting from a source tree, you will need to migrate the test database before being able to build the iudex-da gem. The migration can be run directly from the source tree:
% jbundle exec ./iudex-da/bin/iudex-migrate
Additional external dependencies: