Investigate possibility to use read node of database for mod-oaim-pmh
Currently to read data from database for harvesting mod-oai-pmh uses external dependency vertx-jooq-classic-reactive v.6.5.4 and RMB is used only to add data in the tables.
As example org.folio.oaipmh.processors.MarcWithHoldingsRequestHelper which has logic for harvesting uses two above options.
The same time in mod-oai-pmh vertx-jooq-classic-reactive is also used for some crud repositories with mod-oai-pmh entities.
According documentation https://github.com/folio-org/raml-module-builder#read-and-write-database-instances-setup the read node has such configuration:
The environment variable DB_HOST_READER sets the read database host's URI, if there is a reader instance. The environment variable DB_PORT_READER sets the read database host's port, if there is a reader instance. It is to be used when DB_HOST_READER is set.
So to use read node of database there are two options:
1) Create separate connections for read database node :
It will be needed to support usage DB_HOST_READER and DB_PORT_READER all time. The read node may not exist. If database cluster will not have a reader node it will be necessary to use values of a write node.
In the code it will be needed to divide write and read operations to use proper a write or read connection.
2) Moving to RMB approach. The benefits from it :
- Most of the read-only code in RMB has already been updated to communicate to the Read node directly.
- Samples at folio repositories to create repositories for module's entities based on RMB.
- The standard deployment configuration for the RMB modules.
.