DataONEorg / slinky

Slinky, the DataONE Graph Store
Apache License 2.0
4 stars 4 forks source link

Support Different Graphs in Production #58

Open ThomasThelen opened 2 years ago

ThomasThelen commented 2 years ago

Note: This is using language from the codebase in PR #54

With the ongoing effort around developing a solid deployment, this is a use case that can help drive the solution's direction. In production, Slinky currently uses Virtuoso as the backing graph store. We have unit tests that suggest Blazegraph should also work in a production environment; we should include a way to run Blazegraph in production.

Right now, we're hardcoding which deployment we use in production; each time slinky is deployed, it uses the Virtuoso adapter. To let users choose their graph store, we can support a new flag in the cli to specify which graph store is being used. For example, if the scheduler is going to use Blazegraph-it would be started with slinky schedule --store blazegraph. We can use this to instantiate the appropriate connector/store class. This solves the is of how to specify the graph, but we still need to be able to specify where.

We use the GRAPH_HOST environmental variable to specify the network location of virtuoso. I propose that we change this to VIRTUOSO_HOST, matching the style of BLAZEGRAPH_HOST. If we didn't need to specify the location of all graphs while the unit tests run, we could keep a single environmental variable.

If a user wants to use Blazegraph they must also fill out the appropriate environmental variables. In this case of a user deploying with blazegraph, BLAZEGRAPH_HOST and BLAZEGRAPH_PORT must be set. Likewise, if Virtuoso is used the user specifies the store with slinky schedule --store virtuoso and must fill out the VIRTUOSO_HOST & VIRTUOSO_PORT environmental variables.