GraphDB Users Ask: What Are the Different Ways to Deploy GraphDB?

TESTED ON: GraphDB 10.1

December 9, 2022 4 mins. read GraphDB Q&As

ONTOTEXT ANSWER:

Even the best databases out there can encounter issues. It can be an OOM, a genuine bug, or simply the host machine being shut down. Regardless, while starting GraphDB again after such an event is very easy, it’s much better if this isn’t a manual operation. Deploying GraphDB directly from the command line is not the best option.

It is always recommended to run high-availability environments with the GraphDB cluster. However, even in these cases, the specifics of deploying GraphDB are an open question. Here, we would describe Ontotext’s three preferred methods for running GraphDB, in order of resilience.

Kubernetes, with or without Helm

Kubernetes is a powerful resource orchestration platform, which allows you to easily deploy, monitor and update a system. Naturally, automatic restarts on failure come out of the box. It’s popular for CI/CD and has the benefits of being open-source and having a huge ecosystem. This is complemented by Helm, a templating engine, which allows you to quickly make replicable Kubernetes deployment.

Ontotext offers an open-source Helm chart that allows your Kubernetes-enabled cluster to be set up quickly. The main configurations that you will need to do are related to the particular Kubernetes service provider and storage medium. Even if you don’t have Helm on your target environment, you can run Helm locally and render the chart, providing you with the necessary Kubernetes configurations.

The downside of Kubernetes is that you need time investment to understand the technology and set up your cluster. Even with services like AKS, there is a barrier to entry.

As Helm and Kubernetes are rather complicated, you should refer to our graphdb-helm project for a better understanding.

Docker, with or without Compose

Peeling a layer from the stack, you can use GraphDB directly with Docker and Compose. Docker is the most popular OS virtualization layer. GraphDB ships with an official Docker image. Docker gives you the benefit of a repeatable and consistent image from which to run your application.

There are two ways to make sure your container restarts if there is a failure of any sort. For raw Docker, this is controlled by the –restart flag. This would mean that the container is started when it fails, or if the Docker engine itself restarts.

docker run -d –restart unless-stopped ontotext/graphdb

Pure Docker gives you a way to launch individual containers. For starting a number of containers in orchestration, you are better off using Compose. Its syntax is also much more convenient for providing configurations to the services you run.

version: '3.6'

services:
  graphdb:
    image: ontotext/graphdb:latest
    restart: always
    ports:
      - "7200:7200"
    environment:
      GDB_JAVA_OPTS: "-Xmx6g -Xms1G"

GraphDB-as-a-service

Of course, if you can’t install Docker on your machine, you will have to fall back to something else. All major operating systems provide a way to run a process as a service. This makes the system more fragile than Docker, but requires no additional software at all. Those systems are usually not interoperable, so you would need a specific setup for your own server. One of the more popular ways to do this is Linux and systemd.

[Unit]
Description="Service Description" #[example] - Graphdb worker
After=network.target

[Service]
Group="your user name" #graphdb
User="your user group" #graphdb

Restart=on-failure
RestartSec=5s

TimeoutStopSec=600

Environment=JAVA_HOME=<your java home> #/usr/lib/jvm/java-11-oracle

#Example GDB_JAVA_OPTS
Environment="GDB_JAVA_OPTS=-XX:+TieredCompilation \
-Xmx31G \
-Xms31G"

# Tomcat process exits with status 143 when kill is successful
SuccessExitStatus=143

#Start
ExecStart="<path to graphdb>"# /opt/graphdb/dist/bin/graphdb,example optoions: -Dgraphdb.home=/opt/graphdb/instances/worker -Dgraphdb.connectors.chains.collections=true

[Install]
WantedBy=multi-user.target

Regardless of which way you use to run GraphDB, we will be happy to help you at every part of your journey.

New call-to-action

 

 

 

Article's content

Ontotext answers questions from our GraphDB users. You can also check out the frequently asked questions on general topics about GraphDB. Or you can get quick answers on technical questions from the community as well as Ontotext experts using the graphdb tag on stack overflow.

GraphDB Users Ask: Where Can We Deploy GraphDB And What Are Some Best Practices?

In this blog, we answer questions from our GraphDB users. This question is about where can one deploy GraphDB and what are some best practices

GraphDB Users Ask: What Isolation Levels Does GraphDB Support?

In this blog, we answer questions from our GraphDB users. This question is about the the isolation levels GraphDB supports..

GraphDB Users Ask: What is the Most Important Hardware Attribute for Optimizing GraphDB Performance?

In this blog, we answer questions from our GraphDB users. This question is about the most important hardware attribute for optimizing GraphDB performance.

GraphDB Users Ask: What is the Best Way to Store the Triples’ History in the Database?

In this blog, we answer questions from our GraphDB users. This question is about the best way to store the triples’ history in the database

GraphDB Users Ask: Can I Use Nested Repositories to Introduce Logical Separation to GraphDB?

In this blog, we answer questions from our GraphDB users. This question is about using nested repositories to introduce logical separation to GraphDB

GraphDB Users Ask: Can I Fine-tune Security on Some of the Endpoints in GraphDB?

In this blog, we answer questions from our GraphDB users. This question is about fine-tuning securing on a GraphDB endpoint.

GraphDB Users Ask: What Are the Different Ways to Deploy GraphDB?

In this blog, we answer questions from our GraphDB users. This question is about the different ways to deploy GraphDB.

GraphDB Users Ask: What is the best way to integrate JSON data in GraphDB?

In this blog, we answer questions from our GraphDB users. This question is about the best ways to integrate JSON data in GraphDB.

GraphDB Users Ask: How Does GraphDB’s Security Work, Especially for Automated APIs?

In this feature, we answer questions from our GraphDB users. This question is about how about GraphDB security workds, especially for Automated APIs

GraphDB Users Ask: Is Kafka Only Used for Exporting Data, or for Importing, or Can We Do Both?

In this feature, we answer questions from our GraphDB users. This question is about if Kafka is used only for exporting or importing data or we can use for both

GraphDB Users Ask: How Do I Change the Configuration of an Existing Connector?

In this feature, we answer questions from our GraphDB users. Today’s question is about how to change the configuration of connector if you’ve made a mistake when creating it

GraphDB Users Ask: Are There Any Administration Differences to Operating a Cluster on GraphDB 10?

In this feature, we answer questions from our GraphDB users. Today’s question is about whether there are administration differences to operating a cluster in GraphDB 10

GraphDB Users Ask: Can I Scale GraphDB?

In this feature, we answer questions from our GraphDB users. Today’s question is if one can scale GraphDB.

GraphDB Users Ask: Can I Change My Inference At Runtime?

In this feature, we answer questions from our GraphDB users. Today’s question is if one can change inference at runtime.

GraphDB Users Ask: How To Mark Statements In A Query As Explicit Or Implicit?

In this feature, we answer questions from our GraphDB users. Today’s question is about how to mark statements in a query as explicit or implicit.

GraphDB Users Ask: Can I Use the Standard Ontop Configurations?

In this feature, we answer questions from our GraphDB users. Today’s question is if one can use the standard Onotp configurations.

GraphDB Users Ask: Should I Use a SPARQL Repository or a HTTP Repository?

In this feature, we answer questions from our GraphDB users. Today’s question us whether to use a SPARQL Repository or a HTTP Repository.

GraphDB Users Ask: Do You Have Any Advice on the Log4j Vulnerability for Different Versions of GraphDB?

In this feature, we answer questions from our GraphDB users. Today’s question is about the Log4j vulnerability for different versions of GraphDB.

GraphDB Users Ask 12 Very Short Questions

In this feature, we answer questions from our GraphDB users. Today, we answer 12 very short question from GraphDB users.

GraphDB Users Ask: Which of the GraphDB Logs Do I Need to Monitor for Problems?

In this feature, we answer questions from our GraphDB users. Today’s question is about GraphDB logs and how to monitor for problems.

GraphDB Users Ask: Can You Help Me Optimize My Queries?

In this feature, we answer questions from our GraphDB users. Today’s question is about how users can optimize their queries.

GraphDB Users Ask: What’s the Difference Between SPARQL and FedX Federation?

In this feature, we answer questions from our GraphDB users. Today’s question is about the difference between SPARQL and FedX federation.

GraphDB Users Ask: What Does The “Insufficient Free Heap Memory” Error Mean?

In this feature, we answer questions from our GraphDB users. Today’s question is about what the “Insufficient Free Heap memory” error means.

GraphDB Users Ask: How To Optimize My Inference?

In this feature, we answer questions from our GraphDB users. Today’s question is about how to optimize inference.

GraphDB Users Ask: Is RDF-Star The Best Choice For Reification?

In this feature, we answer questions from our GraphDB users. Today’s question is about whether RDF-star is the best choice for reification.

GraphDB Users Ask: Can GraphDB Infer Data Based on Values From a Virtualized Repository?

In this feature, we answer questions from our GraphDB users. Today’s question is about if GraphDB’s inference works with virtualized repositories.

GraphDB Users Ask: How Does SHACL Work on GraphDB?

In this feature, we answer questions from our GraphDB users. Today’s question is about how SHACL works on GraphDB.

GraphDB Users Ask: Does GraphDB Support ABAC?

In this feature, we answer questions from our GraphDB users. Today’s question is about if GraphDB supports ABAC.

GraphDB Users Ask: Why Do I Get Errors About GraphDB Being “Unable to Find Valid Certification Path to Requested Target”?

In this feature, we answer questions from our GraphDB users. Today’s question is about getting errors about GraphDB being “unable to find valid certification path to requested target”.

GraphDB Users Ask: How Can I Break Up My Data to Control Access To It?

In this feature on our blog, we answer questions from our GraphDB users. Today’s question is about GraphDB security and access control.

GraphDB Users Ask: Why does My Import Start Really Fast But Then Starts Losing Speed After a While?

In this feature on our blog, we answer questions from our GraphDB users. Today’s question is about GraphDB import speed.

GraphDB Users Ask: Can You Help Me Understand The Built-in GraphDB Security?

In this feature on our blog, we answer questions from our GraphDB users. Today’s question is about GraphDB security.

GraphDB Users Ask: How Many Repositories Can I Have in GraphDB and How Can I Unite the Disparate Data Between Them?

In this feature, we answer questions from our GraphDB users. Today’s question is about the number of repos in GraphDB and accessing the data.