---
title: A brief introduction to the Pregel module - ArangoDB
description: This post is outdated, please see more recent infos below. Please see a technical article about our current Pregel integration in our blog, details about the various Pregel algorithms ArangoDB supports in our documentation and a tutorial about Community Detection with real data in our training center.     Ever since Google introduced Pregel as a system…
---

ArangoDB 3.12 Product Release Announcement! Read the blog for details. [Read Blog](https://arangodb.com/2024/03/arangodb-3-12-performance-for-all-your-data-models/)

[![logo](https://blog.arangodb.com/hs-fs/hubfs/Imported_Blog_Media/logo.png?width=301&height=50&name=logo.png "logo")](https://arango.ai)

### Why Graph

[The Rise of Graph](https://arangodb.com/the-rise-of-graph/)

[The Graph ML Gamechanger](https://arangodb.com/the-graph-ml-gamechanger/)

[Consolidate to Graph](https://arangodb.com/graph-vs-relational/)

[Graph DB Basics](https://arangodb.com/graph-database/)

### Products

[Managed Graph DB](https://arangodb.com/arangograph-managedgraphdb/)

[Self-Managed Graph DB](https://arangodb.com/arangograph-selfmanaged/)

[Managed Graph ML](https://arangodb.com/managed-ml-graph/)

[Community Edition](https://arangodb.com/community-server/)

[Compare Products](https://arangodb.com/subscriptions/)

### Solutions

Use Cases

Industries

Solution Accelerators

- [Cyber/Threat Mgmt](https://arangodb.com/solutions/use-cases/cyber-threat-management/)
- [Fraud Detection](https://arangodb.com/solutions/use-cases/fraud-detections/)
- [Supply Chain](https://arangodb.com/solutions/use-cases/supply-chain/)
- [Network Asset Management](https://arangodb.com/solutions/use-cases/network-asset-management/)
- [Customer & Patient 360](https://blog.arangodb.com/solutions/use-case/customer-and-patient-360/)
- [Recommendations](https://arangodb.com/solutions/use-cases/recommendations/)
- [Case Management](https://blog.arangodb.com/solutions/use-case/case-management/)
- [Geospatial Analysis](https://arangodb.com/solutions/use-cases/geospatial/)
- [Master Data Mgmt](https://arangodb.com/solutions/use-cases/master-data-management/)

- [Software & Technology](https://arangodb.com/arangodb-for-software-tech/)
- [Financial Services](https://arangodb.com/arangodb-for-financial-services/)
- [Tele Communication](https://arangodb.com/telecommunications-and-network/)
- [E-commerce](https://arangodb.com/arangodb-for-e-commerce/)
- [Healthcare](https://arangodb.com/arangodb-for-healthcare/)
- [Government](https://arangodb.com/arangodb-for-government/)
- [Aerospace & Defence](https://arangodb.com/arangodb-for-aerospace-defense/)
- [Manufacturing](https://arangodb.com/arangodb-for-manufacturing/)

- [Enterprise Knowledge Graphs](https://arangodb.com/resources/white-papers/enterprise-knowledge-graphs/)
- [Entity Resolution](https://arangodb.com/entity-resolution/)
- [Traceability/Lineage](https://arangodb.com/traceability-and-lineage/)
- [Contexual Relevance](https://arangodb.com/contextual-relevance/)

### Developers

Capabilities

Integrations

Differentiators

- [Graph Traversals](https://arangodb.com/graph-traversals/)
- [Multi-Model DB](https://arangodb.com/multi-model-db/)
- [LLM + Knowledge Graph](https://arangodb.com/llm-knowledge-graph/)
- [Graph ML](https://arangodb.com/managed-ml-graph/)
- [Advanced Geospatial](https://arangodb.com/advanced-geospatial/)
- [Document Store](https://arangodb.com/document-store/)
- [Search Engine](https://arangodb.com/full-text-search-engine/)
- [Security & Compliance](https://arangodb.com/security/)
- [Data Masking](https://arangodb.com/Data-masking/)
- [Key/Value DB](https://arangodb.com/integrated-key-value-support/)

- [Clients / Languages](https://arangodb.com/clients-languages/)
- [BI Tools](https://arangodb.com/bi-tools-support/)
- [Containers](https://arangodb.com/container-support/)
- [Community driven](https://arangodb.com/community-driven/)

- [Model Flexibility](https://arangodb.com/model-flexibility/)
- [Graph Scalability](https://arangodb.com/graph-scalability/)
- [Performance at Scale](https://arangodb.com/performance-at-scale/)
- [Highest Availability](https://arangodb.com/highest-availability/)
- [Unified Query Language](https://arangodb.com/unified-query-languageaql/)
- [Graph + Native Document](https://arangodb.com/graph-document/)
- [Graph + Native Search](https://arangodb.com/graph-search/)
- [Cost Effective](https://arangodb.com/cost-effective-development-operation/)
- [Full Geospatial](https://arangodb.com/full-geospatial/)

### Customers

[All Case Studies](https://arangodb.com/solutions/solutions-customers/#all)

[Government & Cyber](https://arangodb.com/solutions/solutions-customers/#Government-Cyber)

[Manufacturing & Supply Chain](https://arangodb.com/solutions/solutions-customers/#Manufacturing-Supply-Chain)

[Healthcare & Science](https://arangodb.com/solutions/solutions-customers/#Healthcare-Science)

[Retail & Commerce](https://arangodb.com/solutions/solutions-customers/#Retail-Commerce)

[Technology](https://arangodb.com/solutions/solutions-customers/#Technology)

[Education](https://arangodb.com/solutions/solutions-customers/#Education)

[Telco](https://arangodb.com/solutions/solutions-customers/#Telco)

[Financial Services](https://arangodb.com/solutions/solutions-customers/#Financial-Services)

### Learn

[Documentation](https://docs.arangodb.com/stable/)

[Developer Hub](https://developer.arangodb.com/)

[ArangoDB University](https://university.arangodb.com/)

[Blog](https://arangodb.com/blog/)

[Certification](https://arangodb.com/learn/certification/)

[Community](https://arangodb.com/community/)

[Events](https://arangodb.com/events/)

[Resources](https://arangodb.com/resources/)

[Training Center](https://arangodb.com/learn/)

### Company

[About Us](https://arangodb.com/about-us/)

[Team](https://arangodb.com/about-arangodb/)

[Partners](https://arangodb.com/partners/)

[News](https://arangodb.com/news/)

[Careers](https://arangodb.applytojob.com/apply)

### Pricing

- Why Graph 
    - [The Rise of Graph](https://arangodb.com/the-rise-of-graph/)
    - [The Graph ML Gamechanger](https://arangodb.com/the-graph-ml-gamechanger/)
    - [Consolidate to Graph](https://arangodb.com/graph-vs-relational/)
    - [Graph DB Basics](https://arangodb.com/graph-database/)
- Products 
    - [Managed Graph DB](https://arangodb.com/arangograph-managedgraphdb/)
    - [Self-Managed Graph DB](https://arangodb.com/arangograph-selfmanaged/)
    - [Managed Graph ML](https://arangodb.com/managed-ml-graph/)
    - [Community Edition](https://arangodb.com/community-server/)
    - [Compare Products](https://arangodb.com/subscriptions/)
- Solutions 
    - Use Cases 
          - [Cyber/Threat Mgmt](https://arangodb.com/solutions/use-cases/cyber-threat-management/)
          - [Fraud Detection](https://arangodb.com/solutions/use-cases/fraud-detections/)
          - [Supply Chain](https://arangodb.com/solutions/use-cases/supply-chain/)
          - [Network Asset Management](https://arangodb.com/solutions/use-cases/network-asset-management/)
          - [Customer & Patient 360](https://arangodb.com/solutions/use-cases/customer-and-patient-360/)
          - [Recommendations](https://arangodb.com/solutions/use-cases/recommendations/)
          - [Case Management](https://arangodb.com/solutions/use-cases/case-management/)
          - [Geospatial Analysis](https://arangodb.com/solutions/use-cases/geospatial/)
          - [Master Data Mgmt](https://arangodb.com/solutions/use-cases/master-data-management/)
    - Industries 
          - [Software & Technology](https://arangodb.com/arangodb-for-software-tech/)
          - [Financial Services](https://arangodb.com/arangodb-for-financial-services/)
          - [Tele Communication](https://arangodb.com/telecommunications-and-network/)
          - [E-commerce](https://arangodb.com/arangodb-for-e-commerce/)
          - [Healthcare](https://arangodb.com/arangodb-for-healthcare/)
          - [Government](https://arangodb.com/arangodb-for-government/)
          - [Aerospace & Defence](https://arangodb.com/arangodb-for-aerospace-defense/)
          - [Manufacturing](https://arangodb.com/arangodb-for-manufacturing/)
    - Solution Accelerators 
          - [Enterprise Knowledge Graphs](https://arangodb.com/resources/white-papers/enterprise-knowledge-graphs/)
          - [Entity Resolution](https://arangodb.com/entity-resolution/)
          - [Traceability/Lineage](https://arangodb.com/traceability-and-lineage/)
          - [Contexual Relevance](https://arangodb.com/contextual-relevance/)
- Customers 
    - [All Case Studies](https://arangodb.com/solutions/solutions-customers/#all)
    - [Government & Cyber](https://arangodb.com/solutions/solutions-customers/#Government-Cyber)
    - [Manufacturing & Supply Chain](https://arangodb.com/solutions/solutions-customers/#Manufacturing-Supply-Chain)
    - [Healthcare & Science](https://arangodb.com/solutions/solutions-customers/#Healthcare-Science)
    - [Retail & Commerce](https://arangodb.com/solutions/solutions-customers/#Retail-Commerce)
    - [Technology](https://arangodb.com/solutions/solutions-customers/#Technology)
    - [Education](https://arangodb.com/solutions/solutions-customers/#Education)
    - [Telco](https://arangodb.com/solutions/solutions-customers/#Telco)
    - [Financial Services](https://arangodb.com/solutions/solutions-customers/#Financial-Services)
- Learn 
    - [Documentation](https://docs.arangodb.com/stable/)
    - [Developer Hub](https://developer.arangodb.com/)
    - [ArangoDB University](https://university.arangodb.com/)
    - [Blog](https://arangodb.com/blog/)
    - [Certification](https://arangodb.com/learn/certification/)
    - [Community](https://arangodb.com/community/)
    - [Events](https://arangodb.com/events/)
    - [Resources](https://arangodb.com/resources/)
    - [Training Center](https://arangodb.com/learn/)
- Company 
    - [About Us](https://arangodb.com/about-us/)
    - [Team](https://arangodb.com/about-arangodb/)
    - [Partners](https://arangodb.com/partners/)
    - [News](https://arangodb.com/news/)
    - [Careers](https://arangodb.applytojob.com/apply)
- [Pricing](https://arangodb.com/download-major/pricing/)

[**Start Free** ArangoGraph Cloud](https://dashboard.arangodb.cloud/signup?acceptedTermsAndConditions=1)

[**Download Now** ArangoDB Enterprise](https://arangodb.com/download-arangodb-enterprise/)

![Vector-5](https://blog.arangodb.com/hubfs/Imported_Blog_Media/search.svg)

# A brief introduction to the Pregel module

 November 18, 2014

 Tags: [Graph](https://blog.arangodb.com/blog/topic/graph), [Java](https://blog.arangodb.com/blog/topic/java), [General](https://blog.arangodb.com/blog/topic/general)

[Twitter](https://twitter.com/intent/tweet?url=https://blog.arangodb.com/blog/2014/11/intro-pregel-module) [LinkedIn](http://www.linkedin.com/shareArticle?mini=true&url=https://blog.arangodb.com/blog/2014/11/intro-pregel-module) [Reddit](https://www.reddit.com/share?url=https://blog.arangodb.com/blog/2014/11/intro-pregel-module) [Yahoo](https://plus.google.com/share?url=https://blog.arangodb.com/blog/2014/11/intro-pregel-module%3Futm_medium%3Dsocial%26utm_source%3Dgoogle_plus)

![](https://blog.arangodb.com/hubfs/ArangoDB-Blog/clock.svg)Estimated reading time: 7 minutes

This post is outdated, please see more recent infos below.

Please see a technical article about [our current Pregel integration](https://blog.arangodb.com/blog/2017/03/alpha3-arangodb-3-2-support-distributed-graph-processing) in our blog, [details about the various Pregel algorithms ArangoDB supports](https://www.arangodb.com/docs/stable/graphs-pregel.html) in our documentation and a t[utorial about Community Detection with real data](https://www.arangodb.com/docs/stable/graphs-pregel.html) in our training center.

 

 

Ever since Google introduced Pregel as a system for [large-scale graph processing](http://googleresearch.blogspot.de/2009/06/large-scale-graph-computing-at-google.html) we thought of a way how to enable this feature in ArangoDB. So we set up an ArangoDB cluster, created some huge graphs and started evaluating the concept. We came up with a new ArangoDB module (called pregelRunner) that enables the user to write own algorithms, pass them to ArangoDB and have them executed in a Pregel-like fashion.

This means that the user’s algorithm is executed step wise on each server in the cluster in parallel for all its local vertices. In each step the vertices can send messages to each other to distribute information. These messages can be received by the other vertex in the next step. The algorithm terminates when there are no more active vertices left and no message has been sent.

We started to implement an experimental version of Pregel in ArangoDB. You need to check-out the `pregel` branch of ArangoDB in order to play with the following examples. Please be advised that the implementation is still in an early phase and very like to change. In this post we will provide a brief introduction to ArangoDB’s Pregel module by guiding you through the implementation of an example algorithm.

---

### An algorithm to detect “connected components”

[![pregel_connected_components](https://blog.arangodb.com/hs-fs/hubfs/Imported_Blog_Media/pregel_connected_components.gif?width=300&height=225&name=pregel_connected_components.gif)](https://blog.arangodb.com/hubfs/Imported_Blog_Media/pregel_connected_components.gif)Our example algorithm is supposed to solve the [connected components](http://en.wikipedia.org/wiki/Connected_component_%28graph_theory%29) problem, which means it identifies all connected sub-graphs within a graph. So first of all we need a graph to work with …

### The graph

We will generate a simple graph (called **CountryGraph**) containing 10 countries and a relation named **hasBorderWith** which forms 4 connected components:

1. Germany, Austria, Switzerland
2. Morocco, Algeria, Tunisia
3. Brazil, Argentina, Uruguay
4. Australia

To import this graph save this [file](https://usarangodb.wpengine.com/wp-content/uploads/2014/11/createGraph.js), open an ArangoShell and execute the following line:

```
arangosh [_system]> require("internal").load(PATH_TO_THE_FILE);    
```

### The worker algorithm

First of all the worker algorithm is executed on each vertex in the graph, a cursor on the messages for this vertex and a global object containing step information and user-defined global data. So our algorithm signature has to look like this:

```
var connectedSetsAlgorithm = function (vertex, message, global) {
```

So how can an algorithm be designed that is supposed to detect all components? We will implement this in a very straight-forward fashion:

Each component’s identifier is the alphabetically sorted last **\_key** attribute of its vertices. So in step 0 each vertex stores its own key in the result and reaches out to its connected edges. Note that you can not access the vertex’ attributes directly as you are working with a generic wrapper around the original vertex. To access an attribute of the original vertex you need to use the **\_get(“someAttribute”)** method :

```
switch(global.step) {
 case 0:
   result = {
     value: vertex._get("_key"),
     backwards: []
   }
   sendSender = true;
   break;
}
```

A vertex can only access its outgoing edges and hence in step 1 remembers the senders of all its received messages in an array to enable backwards communication. Also in step 1 it is already changing its component id based on the incoming messages:

```
case 1:
  result = vertex._getResult();
  while (message.hasNext()) {
    next = message.next();
    if (result.value < next.data) {
      result.value = next.data;
    }
    result.backwards.push(next.sender);
  }
  break;
```

So the first 2 steps enable backwards and forward communication, now we just need to run the algorithm until every vertex received its component identifier. Hence in every other step each vertex changes its component identifier in case it receives a new one from his neighbors:

```
default:
  result = vertex._getResult();
  while (message.hasNext()) {
    next = message.next();
    if (result.value < next.data) {
      result.value = next.data;
      changed = true;
    }
  }
```

If a vertex does not receive any more messages or does not take on a new component identifier it has to send no messages and will be deactivated. Notice that it could be reactivated in the next step if it would receive a new message from its neighbors:

```
if (global.step > 1 && ! changed) {
 vertex._deactivate();
 return;
}
```

Now if the vertex took on a new component identifier we have to store it …

```
vertex._setResult(result);
```

… and spread it to its neighbors , both outbound …

```
while (vertex._outEdges.hasNext()) {
  edge = vertex._outEdges.next();
  message.sendTo(edge._getTarget(), result.value, sendSender);
}
```

…. and inbound:

```
for (var i = 0; i < result.backwards.length; ++i) {
  message.sendTo(result.backwards[i], result.value, sendSender);
}
```

Now the vertex is deactivated and awaits further messages in the next steps.

```
vertex._deactivate();
```

### The combiner algorithm

Perfect, the worker algorithm is now defined, but we want it to be really fast and reduce unnecessary messages. This is where it can be a good idea to make use of a customized message combiner. In our example one country can receive multiple messages in one step, i.e. Germany might receive a message from Austria and Switzerland. In step 1 Austria sent “Austria” and Switzerland “Switzerland” as their component identifiers. We are only interested in the designated component identifier so we could ignore Austria’s message (because of alphabetical sort order). The Pregel module allows you to define a message combiner with the signature

```
function(next, old) {}
```

where next is the next message and old is the combined message. So in our example we would define a combiner that would already filter every unnecessary message and would just send the actual component identifier:

```
var combiner = function(next, old) {
  if (old == null || next < old) {
    return next;
  }
  return old;
}
```

As i.e. Germany has 2 neighboring countries, the algorithm would send 1 message instead of 2 using this combiner. So our algorithms are defined, let’s use ArangoDB’s pregelRunner module to execute it.

### The pregelRunner module

So at first we require the pregelRunner and create a new Runner instance:

```
arangosh [_system]> var pregelRunner = require("org/arangodb/pregelRunner");
arangosh [_system]> var runner = new pregelRunner.Runner();
```

For convenience reasons our defined Pregel algorithm is available in this [file](https://usarangodb.wpengine.com/wp-content/uploads/2014/11/connectedSets.js). After loading it in the shell the functions can be passed to the runner:

```
arangosh [_system]> require("internal").load(PATH_TO_THE_FILE);
arangosh [_system]> runner.setWorker(worker);
{ 
  "worker" : function (vertex, message, global) { ... } 
}
arangosh [_system]> runner.setCombiner(combiner);
{ 
  "worker" : function (vertex, message, global) { ... }, 
  "combiner" : function (next, old) { ... } 
}
```

Now as the runner is configured, we can start the Pregel run on our graph:

```
arangosh [_system]> runner.start("CountryGraph");
16752523162
```

The start method returns the unique execution number of the triggered run. Now we can use the runner to retrieve information about the current state of the run …

```
arangosh [_system]> runner.getStatus();
{ 
 "step" : 5, 
 "state" : "finished" 
}
```

… and when it finished we can get the name of the result graph:

```
arangosh [_system]> runner.getResult();
{ 
  "graphName" : "P_16752523162_RESULT_CountryGraph", 
  "state" : "finished" 
}
```

Note that the Pregel module creates a copy of the original graph and stores any result there. The original graph remains untouched. Now let’s see if the result matches our expectations by loading the vertices of the result graph:

```
arangosh [_system]> var graph_module = require("org/arangodb/general-graph");
var resultGraph = graph_module._graph("P_16752523162_RESULT_CountryGraph");
arangosh [_system]> resultGraph._vertices().toArray().forEach(function(vertex) {require("internal").print(vertex._key + " is in component " + vertex.result.value); });
Switzerland is in component Switzerland
Germany is in component Switzerland
Austria is in component Switzerland
Algeria is in component Tunisia
Tunisia is in component Tunisia
Morocco is in component Tunisia
Brazil is in component Uruguay
Argentina is in component Uruguay
Uruguay is in component Uruguay
Australia is in component Australia
```

Perfect, we have identified 4 subgraphs in our graph (*Switzerland*, *Tunisia* , *Uruguay* and *Australia*). As we enjoyed this moment long enough we can delete the result graph and any meta data:

```
arangosh [_system]> runner.dropResult();
{ 
  "error" : false, 
  "code" : 200 
}
```

Now the result graph is gone ..

```
arangosh [_system]> var resultGraph = graph_module._graph("P_16752523162_RESULT_CountryGraph");
JavaScript exception in file './js/common/modules/org/arangodb/general-graph.js' at 2349,11: [ArangoError 1924: graph not found]
!    throw err;
!          ^
```

### More features

A few already implemented features not used by this example are:

#### The final Step:

Remember, the algorithm terminates when every vertex has been deactivated and no more messages have been sent, right? Well, sometimes one wants to perform a final step for cleanup or even wants to continue and reactivate some vertices. The optional *finalStepAlgorithm* solves this issue. Again it is a function with the same signature as the worker algorithm **(vertex, message, global)** but is called for every deactivated but not deleted vertex in the graph whenever the execution would normally end.

Usage:

```
arangosh [_system]> runner.setFinalstep(finalStepAlgorithm)
```

#### The super step:

Sometimes you want a “super-algorithm” to be executed between steps, f.e in a graph coloring algorithm you need a mechanism that introduces a new color to the algorithm when the last one has been spread. This is where the *superStep* comes in. The *superStep* is a function not called on a vertex but in a global context. Hence its signature must be function (globals, stepInfo).

Usage:

```
arangosh [_system]> runner.setSuperstep(superStepAlgorithm)
```

### Outlook

The *pregelRunner* module is currently under development and we will add more features to it and make it a mighty tool for large scale graph processing. We already found various problems in graph theory that were unsolvable due to time and memory restrictions for very large graphs but which can be approached with the Pregel system (f.e. all-shortest-paths, graph coloring, minimum spanning trees).

[Twitter](https://twitter.com/intent/tweet?url=https://blog.arangodb.com/blog/2014/11/intro-pregel-module) [LinkedIn](http://www.linkedin.com/shareArticle?mini=true&url=https://blog.arangodb.com/blog/2014/11/intro-pregel-module) [Reddit](https://www.reddit.com/share?url=https://blog.arangodb.com/blog/2014/11/intro-pregel-module) [Yahoo](https://plus.google.com/share?url=https://blog.arangodb.com/blog/2014/11/intro-pregel-module%3Futm_medium%3Dsocial%26utm_source%3Dgoogle_plus)

![Picture of Frank Celler](https://blog.arangodb.com/hubfs/Imported_Blog_Media/Authors/Author-avatar.png)

 November 18, 2014 , [Frank Celler](https://blog.arangodb.com/blog/author/frank-celler)

Frank is both entrepreneur and backend developer, developing mostly memory databases for two decades. He is the CTO and co-founder of ArangoDB. Try to challenge Frank asking him questions on C, C++ and MRuby. Besides Frank organizes Cologne’s NoSQL group & is an active member of NoSQL community.

### Leave a Comment

 Tags

- [General](https://blog.arangodb.com/blog/topic/general)
- [Release](https://blog.arangodb.com/blog/topic/release)
- [Community](https://blog.arangodb.com/blog/topic/community)
- [Releases](https://blog.arangodb.com/blog/topic/releases)
- [Performance](https://blog.arangodb.com/blog/topic/performance)
- [Tutorial](https://blog.arangodb.com/blog/topic/tutorial)
- [Foxx](https://blog.arangodb.com/blog/topic/foxx)
- [AQL](https://blog.arangodb.com/blog/topic/aql)
- [API](https://blog.arangodb.com/blog/topic/api)
- [Newsletter](https://blog.arangodb.com/blog/topic/newsletter)
- [Cluster](https://blog.arangodb.com/blog/topic/cluster)
- [Graph](https://blog.arangodb.com/blog/topic/graph)
- [Graphs](https://blog.arangodb.com/blog/topic/graphs)
- [Documentation](https://blog.arangodb.com/blog/topic/documentation)
- [Javascript](https://blog.arangodb.com/blog/topic/javascript)
- [Query Language](https://blog.arangodb.com/blog/topic/query-language)
- [Architecture](https://blog.arangodb.com/blog/topic/architecture)
- [NoSQL](https://blog.arangodb.com/blog/topic/nosql)
- [Enterprise](https://blog.arangodb.com/blog/topic/enterprise)
- [Ruby](https://blog.arangodb.com/blog/topic/ruby)
- [RocksDB](https://blog.arangodb.com/blog/topic/rocksdb)
- [testing](https://blog.arangodb.com/blog/topic/testing)
- [ArangoML](https://blog.arangodb.com/blog/topic/arangoml)
- [Machine Learning](https://blog.arangodb.com/blog/topic/machine-learning)
- [Benchmark](https://blog.arangodb.com/blog/topic/benchmark)
- [Java](https://blog.arangodb.com/blog/topic/java)
- [driver](https://blog.arangodb.com/blog/topic/driver)
- [multi-model](https://blog.arangodb.com/blog/topic/multi-model)
- [geo](https://blog.arangodb.com/blog/topic/geo)
- [how to](https://blog.arangodb.com/blog/topic/how-to)
- [Drivers](https://blog.arangodb.com/blog/topic/drivers)
- [PHP](https://blog.arangodb.com/blog/topic/php)
- [Security](https://blog.arangodb.com/blog/topic/security)
- [nodejs](https://blog.arangodb.com/blog/topic/nodejs)
- [python](https://blog.arangodb.com/blog/topic/python)
- [ArangoSearch](https://blog.arangodb.com/blog/topic/arangosearch)
- [Kubernetes](https://blog.arangodb.com/blog/topic/kubernetes)
- [Presentation](https://blog.arangodb.com/blog/topic/presentation)
- [open-source](https://blog.arangodb.com/blog/topic/open-source)
- [Future-of-nosql](https://blog.arangodb.com/blog/topic/future-of-nosql)
- [GitHub](https://blog.arangodb.com/blog/topic/github)
- [ARM: Raspberry + Co.](https://blog.arangodb.com/blog/topic/arm-raspberry-co-)
- [Fraud Detection](https://blog.arangodb.com/blog/topic/fraud-detection)
- [Managed Service](https://blog.arangodb.com/blog/topic/managed-service)
- [arangosh](https://blog.arangodb.com/blog/topic/arangosh)
- [C++](https://blog.arangodb.com/blog/topic/c)
- [Cloud](https://blog.arangodb.com/blog/topic/cloud)
- [Conferences](https://blog.arangodb.com/blog/topic/conferences)
- [Data Science](https://blog.arangodb.com/blog/topic/data-science)
- [HTTP](https://blog.arangodb.com/blog/topic/http)
- [ML](https://blog.arangodb.com/blog/topic/ml)
- [Pregel](https://blog.arangodb.com/blog/topic/pregel)
- [Replication](https://blog.arangodb.com/blog/topic/replication)
- [WebUI](https://blog.arangodb.com/blog/topic/webui)
- [graph database](https://blog.arangodb.com/blog/topic/graph-database)
- [monitoring](https://blog.arangodb.com/blog/topic/monitoring)
- [pytorch](https://blog.arangodb.com/blog/topic/pytorch)
- [Application Server](https://blog.arangodb.com/blog/topic/application-server)
- [ArangoGraphML](https://blog.arangodb.com/blog/topic/arangographml)
- [Community Edition](https://blog.arangodb.com/blog/topic/community-edition)
- [Compliance](https://blog.arangodb.com/blog/topic/compliance)
- [Linux](https://blog.arangodb.com/blog/topic/linux)
- [Publication](https://blog.arangodb.com/blog/topic/publication)
- [Relational Database](https://blog.arangodb.com/blog/topic/relational-database)
- [SOC 2](https://blog.arangodb.com/blog/topic/soc-2)
- [Windows](https://blog.arangodb.com/blog/topic/windows)
- [licensing](https://blog.arangodb.com/blog/topic/licensing)
- [networkx](https://blog.arangodb.com/blog/topic/networkx)
- [storage](https://blog.arangodb.com/blog/topic/storage)
- [ARM](https://blog.arangodb.com/blog/topic/arm)
- [Alliances](https://blog.arangodb.com/blog/topic/alliances)
- [ArangoDB Cloud](https://blog.arangodb.com/blog/topic/arangodb-cloud)
- [ArangoSync](https://blog.arangodb.com/blog/topic/arangosync)
- [Arangograph](https://blog.arangodb.com/blog/topic/arangograph)
- [CNFC](https://blog.arangodb.com/blog/topic/cnfc)
- [DC/OS](https://blog.arangodb.com/blog/topic/dc-os)
- [DGL Adaptor](https://blog.arangodb.com/blog/topic/dgl-adaptor)
- [Data Loader](https://blog.arangodb.com/blog/topic/data-loader)
- [Dev Days 2021](https://blog.arangodb.com/blog/topic/dev-days-2021)
- [Developer Hub](https://blog.arangodb.com/blog/topic/developer-hub)
- [Funding Announcement](https://blog.arangodb.com/blog/topic/funding-announcement)
- [GO](https://blog.arangodb.com/blog/topic/go)
- [GenAI](https://blog.arangodb.com/blog/topic/genai)
- [Graph DB](https://blog.arangodb.com/blog/topic/graph-db)
- [Graph DBs](https://blog.arangodb.com/blog/topic/graph-dbs)
- [Graph Databases](https://blog.arangodb.com/blog/topic/graph-databases)
- [Graph Neural Networks](https://blog.arangodb.com/blog/topic/graph-neural-networks)
- [GraphDB](https://blog.arangodb.com/blog/topic/graphdb)
- [Inside ArangoDB](https://blog.arangodb.com/blog/topic/inside-arangodb)
- [Intel](https://blog.arangodb.com/blog/topic/intel)
- [Intel PyG](https://blog.arangodb.com/blog/topic/intel-pyg)
- [Intel Xeon CPU](https://blog.arangodb.com/blog/topic/intel-xeon-cpu)
- [KG](https://blog.arangodb.com/blog/topic/kg)
- [Knowledge Graphs](https://blog.arangodb.com/blog/topic/knowledge-graphs)
- [LLM](https://blog.arangodb.com/blog/topic/llm)
- [Large Language Models](https://blog.arangodb.com/blog/topic/large-language-models)
- [Migrate to Graph](https://blog.arangodb.com/blog/topic/migrate-to-graph)
- [NetworkX Adaptor](https://blog.arangodb.com/blog/topic/networkx-adaptor)
- [Oasis](https://blog.arangodb.com/blog/topic/oasis)
- [Partners](https://blog.arangodb.com/blog/topic/partners)
- [PyG](https://blog.arangodb.com/blog/topic/pyg)
- [PyTorch Geometric](https://blog.arangodb.com/blog/topic/pytorch-geometric)
- [RDF](https://blog.arangodb.com/blog/topic/rdf)
- [Series B](https://blog.arangodb.com/blog/topic/series-b)
- [adapter](https://blog.arangodb.com/blog/topic/adapter)
- [analytics](https://blog.arangodb.com/blog/topic/analytics)
- [analyzers](https://blog.arangodb.com/blog/topic/analyzers)
- [arangopipe](https://blog.arangodb.com/blog/topic/arangopipe)
- [atomics](https://blog.arangodb.com/blog/topic/atomics)
- [aws](https://blog.arangodb.com/blog/topic/aws)
- [collaboration](https://blog.arangodb.com/blog/topic/collaboration)
- [concurrency](https://blog.arangodb.com/blog/topic/concurrency)
- [dev days](https://blog.arangodb.com/blog/topic/dev-days)
- [fuzzy search](https://blog.arangodb.com/blog/topic/fuzzy-search)
- [graphsage](https://blog.arangodb.com/blog/topic/graphsage)
- [licence](https://blog.arangodb.com/blog/topic/licence)
- [memory model](https://blog.arangodb.com/blog/topic/memory-model)
- [plugin](https://blog.arangodb.com/blog/topic/plugin)
- [preprocessing](https://blog.arangodb.com/blog/topic/preprocessing)
- [recommendation](https://blog.arangodb.com/blog/topic/recommendation)
- [resource description framework](https://blog.arangodb.com/blog/topic/resource-description-framework)
- [semantic web](https://blog.arangodb.com/blog/topic/semantic-web)
- [torch](https://blog.arangodb.com/blog/topic/torch)
- [turtle](https://blog.arangodb.com/blog/topic/turtle)
- [x86](https://blog.arangodb.com/blog/topic/x86)
- [— Relational Database](https://blog.arangodb.com/blog/topic/-relational-database)

[![logo](https://blog.arangodb.com/hs-fs/hubfs/Imported_Blog_Media/logo.png?width=301&height=50&name=logo.png "logo")](https://arango.ai)

ArangoGraph Insights Platform Accelerate application innovation and performance with our next-generation graph data and analytics platform.

- <https://www.facebook.com/arangodb.database/>
- <https://twitter.com/i/flow/login?redirect_after_login=%2Farangodb>
- <https://www.instagram.com/arangodb/>
- <https://www.linkedin.com/company/arangodb/>
- <https://www.youtube.com/user/ArangoDB>

#### Quick Links

- [Quick Start](https://docs.arangodb.com/3.11/)
- [Roadmap](https://arangodb.com/roadmap/)
- [Language Drivers](https://docs.arangodb.com/3.11/develop/drivers/)
- [Case Studies](https://arangodb.com/solutions/solutions-customers/#all)
- [BI Connectors](https://arangodb.com/community-driven/bi-connector-arangodb/)
- [Certification Exam](https://arangodb.com/learn/certification/)

#### Info

- [Community](https://arangodb.com/community/)
- [Events](https://arangodb.com/events)
- [Online Meetup](https://www.meetup.com/online-ArangoDB-meetup/)
- [Logo/Resources](https://arangodb.com/resources/logos/)
- [Stackoverflow](https://stackoverflow.com/questions/tagged/arangodb)
- [Slack](https://join.slack.com/t/arangodb-community/shared_invite/zt-2d4p43cma-flyf72j9a9wq4A2OtuMFkA)

#### About Us

- [About Us](https://arangodb.com/about-us/)
- [Jobs](https://arangodb.applytojob.com/apply)
- [Imprint](https://arangodb.com/imprint/)
- [Contact Us](https://arangodb.com/contact/)
- [News](https://arangodb.com/news/)
- [Google Groups](https://groups.google.com/g/arangodb)

#### Stay In Touch

Keep up with the latest news from the ArangoDB

 ©2023 ArangoDB. All Rights Reserved.

[Terms & Conditions](https://cloud.arangodb.com/terms-and-conditions)|[Our Privacy Policy](https://cloud.arangodb.com/privacy-policy)

![](https://www.facebook.com/tr?id=336858843477853&ev=PageView&noscript=1)