Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .circleci/base_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ commands:

git clone --depth 1 --branch $branch_name --recurse-submodules --shallow-submodules --jobs 8 https://github.com/arangodb/arangodb.git /root/project

if [ "<< parameters.version >>" = "3.10" ] || [ "<< parameters.version >>" = "3.11" ]; then
if [ "<< parameters.version >>" = "3.10" ] || [ "<< parameters.version >>" = "3.11" || [ "<< parameters.version >>" = "oem" ]; then
ENTERPRISE_BRANCH="<< parameters.version >>"
else
ENTERPRISE_BRANCH="devel"
Expand Down Expand Up @@ -131,7 +131,7 @@ commands:
set +e
if [ "<< parameters.version >>" = "3.10" ]; then
cmake --preset enterprise-pr -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" -DCMAKE_LIBRARY_PATH=$OPENSSL_ROOT_DIR/lib -DUSE_MAINTAINER_MODE=Off -DUSE_GOOGLE_TESTS=Off -DUSE_FAILURE_TESTS=Off
elif [ "<< parameters.version >>" = "3.11" ]; then
elif [ "<< parameters.version >>" = "3.11" ] || [ "<< parameters.version >>" = "oem" ]; then
# The OpenSSL dir that CMake discovers needs to be adjacent to where ldap.h is located, here: /opt
cmake --preset enterprise-pr -DCMAKE_C_COMPILER=/tools/clang -DCMAKE_CXX_COMPILER=/tools/clang++ -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" -DCMAKE_LIBRARY_PATH=$OPENSSL_ROOT_DIR/lib -DOPENSSL_ROOT_DIR=/opt -DUSE_MAINTAINER_MODE=Off -DUSE_GOOGLE_TESTS=Off -DUSE_FAILURE_TESTS=Off
else
Expand Down
6 changes: 5 additions & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ parameters:
type: string
default: "undefined"

arangodb-oem:
type: string
default: "undefined"

arangodb-3_10:
type: string
default: "undefined"
Expand Down Expand Up @@ -116,7 +120,7 @@ jobs:

python3 generate_config.py \
--workflow << pipeline.parameters.workflow >> \
--arangodb-branches << pipeline.parameters.arangodb-3_10 >> << pipeline.parameters.arangodb-3_11 >> << pipeline.parameters.arangodb-3_12 >> << pipeline.parameters.arangodb-3_13 >> \
--arangodb-branches << pipeline.parameters.arangodb-oem >> << pipeline.parameters.arangodb-3_10 >> << pipeline.parameters.arangodb-3_11 >> << pipeline.parameters.arangodb-3_12 >> << pipeline.parameters.arangodb-3_13 >> \
--arangodb-branch << pipeline.parameters.arangodb-branch >> \
--release-type << pipeline.parameters.release-type >> \
--docs-version << pipeline.parameters.docs-version >> \
Expand Down
9 changes: 5 additions & 4 deletions .circleci/generate_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ def workflow_generate(config):
}
})

if version in ["3.10", "3.11"]:
if version in ["3.10", "3.11", "oem"]:
if openssl.startswith("3.0"):
compileJob["compile-linux"]["build-image"] = "arangodb/build-alpine-x86_64:3.16-gcc11.2-openssl3.0.10"
elif openssl.startswith("3.1"):
Expand Down Expand Up @@ -191,7 +191,7 @@ def workflow_generate_scheduled(config):
"compile-linux": {
"context": ["sccache-aws-bucket"],
"name": f"compile-{version}",
"arangodb-branch": f"arangodb/enterprise-preview:{version}-nightly" if version in ["3.10", "3.11"] else "arangodb/enterprise-preview:devel-nightly", # TODO: Any other 3.12.x image we could use?
"arangodb-branch": f"arangodb/enterprise-preview:{version}-nightly" if version in ["3.10", "3.11", "oem"] else "arangodb/enterprise-preview:devel-nightly", # TODO: Any other 3.12.x image we could use?
"version": version
}
}
Expand Down Expand Up @@ -241,14 +241,15 @@ def workflow_release_arangodb(config):
}
}

if args.docs_version in ["3.10", "3.11"]:
if args.docs_version in ["3.10", "3.11", "oem"]:
if openssl.startswith("3.0"):
compileJob["compile-linux"]["build-image"] = "arangodb/build-alpine-x86_64:3.16-gcc11.2-openssl3.0.10"
elif openssl.startswith("3.1"):
compileJob["compile-linux"]["build-image"] = "arangodb/build-alpine-x86_64:3.16-gcc11.2-openssl3.1.2"
elif openssl.startswith("1.1"):
compileJob["compile-linux"]["build-image"] = "arangodb/build-alpine-x86_64:3.16-gcc11.2-openssl1.1.1s"
else:
# TODO: OEM might need a separate image
compileJob["compile-linux"]["build-image"] = "arangodb/ubuntubuildarangodb-devel:9" # 3.11.13
else: # build image for 3.12.4 and devel as of 2024-11-25
compileJob["compile-linux"]["build-image"] = "arangodb/ubuntubuildarangodb-devel:9"
Expand Down Expand Up @@ -307,7 +308,7 @@ def workflow_generate_launch_command(config):
branch = args.arangodb_branches[i]

if args.workflow != "generate": #generate scheduled etc.
branch = f"arangodb/enterprise-preview:{version}-nightly" if version in ["3.10", "3.11"] else "arangodb/enterprise-preview:devel-nightly" # TODO: Any other 3.12.x image we could use?
branch = f"arangodb/enterprise-preview:{version}-nightly" if version in ["3.10", "3.11", "oem"] else "arangodb/enterprise-preview:devel-nightly" # TODO: Any other 3.12.x image we could use?

if branch == "undefined":
continue
Expand Down
5 changes: 5 additions & 0 deletions CIRCLECI.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ arguments are invoked:
| Parameter type | Name | Value |
|:---------------|:-----|:------|
| string | `workflow` | `generate` |
| string | `arangodb-oem` | [Upstream reference](#upstream-references) for OEM LTS |
| string | `arangodb-3_10` | [Upstream reference](#upstream-references) for 3.10 |
| string | `arangodb-3_11` | [Upstream reference](#upstream-references) for 3.11 |
| string | `arangodb-3_12` | [Upstream reference](#upstream-references) for 3.12 |
Expand All @@ -93,6 +94,7 @@ arguments are invoked:
| Parameter type | Name | Value |
|:---------------|:-----|:------|
| string | `workflow` | `generate` |
| string | `arangodb-oem` | [Upstream reference](#upstream-references) for OEM LTS |
| string | `arangodb-3_10` | [Upstream reference](#upstream-references) for 3.10 |
| string | `arangodb-3_11` | [Upstream reference](#upstream-references) for 3.11 |
| string | `arangodb-3_12` | [Upstream reference](#upstream-references) for 3.12 |
Expand Down Expand Up @@ -121,6 +123,7 @@ or for multiple versions.
| Parameter type | Name | Value |
|:---------------|:-----|:------|
| string | `workflow` | `generate` |
| string | `arangodb-oem` | [Upstream reference](#upstream-references) for OEM LTS |
| string | `arangodb-3_10` | [Upstream reference](#upstream-references) for 3.10 |
| string | `arangodb-3_11` | [Upstream reference](#upstream-references) for 3.11 |
| string | `arangodb-3_12` | [Upstream reference](#upstream-references) for 3.12 |
Expand Down Expand Up @@ -202,6 +205,7 @@ Invoke Args:
| Parameter type | Name | Value |
|:---------------|:-----|:------|
| string | `workflow` | `generate-scheduled` |
| string | `arangodb-oem` | `arangodb/enterprise-preview:oem-nightly` |
| string | `arangodb-3_10` | `arangodb/enterprise-preview:3.10-nightly` |
| string | `arangodb-3_11` | `arangodb/enterprise-preview:3.11-nightly` |
| string | `arangodb-3_12` | `arangodb/enterprise-preview:devel-nightly` |
Expand All @@ -219,6 +223,7 @@ Invoke Args:
| Parameter type | Name | Value |
|:---------------|:-----|:------|
| string | `workflow` | `generate-oasisctl` |
| string | `arangodb-oem` | `arangodb/enterprise-preview:oem-nightly` |
| string | `arangodb-3_10` | `arangodb/enterprise-preview:3.10-nightly` |
| string | `arangodb-3_11` | `arangodb/enterprise-preview:3.11-nightly` |
| string | `arangodb-3_12` | `arangodb/enterprise-preview:devel-nightly` |
Expand Down
42 changes: 42 additions & 0 deletions site/content/arangodb/oem/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
title: Recommended Resources
menuTitle: '3.11'
weight: 98
layout: default
---
{{< cloudbanner >}}

{{< cards >}}

{{% card title="What is ArangoDB?" link="about/" %}}
Get to know graphs, ArangoDB's use cases and features.
{{% /card %}}

{{% card title="Get started" link="get-started/" %}}
Learn about ArangoDB's core concepts, how to interact with the database system,
and get a server instance up and running.
{{% /card %}}

{{% card title="Arango Managed Platform (AMP)" link="amp/" %}}
Try out Arango's fully-managed cloud offering for a faster time to value.
{{% /card %}}

{{% card title="AQL" link="aql/" %}}
ArangoDB's Query Language AQL lets you use graphs, JSON documents, and search
via a single, composable query language.
{{% /card %}}

{{% card title="Data Science" link="data-science/" %}}
Discover the graph analytics and machine learning features of ArangoDB.
{{% /card %}}

{{% card title="Deploy" link="deploy/" %}}
Find the right deployment mode and set up your ArangoDB instance.
{{% /card %}}

{{% card title="Develop" link="develop/" %}}
See the in-depth feature and API documentation to start developing applications
with ArangoDB as your backend.
{{% /card %}}

{{< /cards >}}
75 changes: 75 additions & 0 deletions site/content/arangodb/oem/about/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
---
title: What is ArangoDB?
menuTitle: About ArangoDB
weight: 5
description: >-
ArangoDB is a scalable graph database system to drive value from connected
data, faster
aliases:
- introduction
- introduction/about-arangodb
---
![ArangoDB Overview Diagram](../../../images/arangodb-overview-diagram.png)

ArangoDB combines the analytical power of native graphs with an integrated
search engine, JSON support, and a variety of data access patterns via a single,
composable query language.

ArangoDB is available in an open-source and a commercial [edition](features/_index.md).
You can use it for on-premises deployments, as well as a fully managed
cloud service, the [Arango Managed Platform (AMP)](../../../amp/_index.md).

## What are Graphs?

Graphs are information networks comprised of nodes and relations.

![Node - Relation - Node](../../../images/data-model-graph-relation-abstract.png)

A social network is a common example of a graph. People are represented by nodes
and their friendships by relations.

![Mary - is friend of - John](../../../images/data-model-graph-relation-concrete.png)

Nodes are also called vertices (singular: vertex), and relations are edges that
connect vertices.
A vertex typically represents a specific entity (a person, a book, a sensor
reading, etc.) and an edge defines how one entity relates to another.

![Mary - bought - Book, is friend of - John](../../../images/data-model-graph-relations.png)

This paradigm of storing data feels natural because it closely matches the
cognitive model of humans. It is an expressive data model that allows you to
represent many problem domains and solve them with semantic queries and graph
analytics.

## Beyond Graphs

Not everything is a graph use case. ArangoDB lets you equally work with
structured, semi-structured, and unstructured data in the form of schema-free
JSON objects, without having to connect these objects to form a graph.

![Person Mary, Book ArangoDB](../../../images/data-model-document.png)

<!-- TODO:
Seems too disconnected, what is the relation?
Maybe multiple docs, maybe also include folders (collections)?
-->

Depending on your needs, you may mix graphs and unconnected data.
ArangoDB is designed from the ground up to support multiple data models with a
single, composable query language.

```aql
FOR book IN Books
FILTER book.title == "ArangoDB"
FOR person IN 2..2 INBOUND book Sales, OUTBOUND People
RETURN person.name
```

ArangoDB also comes with an integrated search engine for information retrieval,
such as full-text search with relevance ranking.

ArangoDB is written in C++ for high performance and built to work at scale, in
the cloud or on-premises.

<!-- deployment options, move from features page, on-prem vs cloud? -->
126 changes: 126 additions & 0 deletions site/content/arangodb/oem/about/features/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
---
title: Features and Capabilities
menuTitle: Features
weight: 20
description: >-
ArangoDB is a graph database with a powerful set of features for data management and analytics,
supported by a rich ecosystem of integrations and drivers
aliases:
- ../introduction/features
---
## On-premises versus Cloud

### Fully managed cloud service

The fully managed multi-cloud
[Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic)
is the easiest and fastest way to get started. It runs the Enterprise Edition
of ArangoDB, lets you deploy clusters with just a few clicks, and is operated
by a dedicated team of ArangoDB engineers day and night. You can choose from a
variety of support plans to meet your needs.

- Supports many of the AWS and GCP cloud deployment regions
- High availability featuring multi-region zone clusters, managed backups,
and zero-downtime upgrades
- Integrated monitoring, alerting, and log management
- Highly secure with encryption at transit and at rest
- Includes elastic scalability for all deployment models (OneShard and Sharded clusters)

To learn more, go to the [AMP documentation](../../../../amp/_index.md).

### Self-managed in the cloud

ArangoDB can be self-deployed on AWS or other cloud platforms, too. However, when
using a self-managed deployment, you take full control of managing the resources
needed to run it in the cloud. This involves tasks such as configuring,
provisioning, and monitoring the system. For more details, see
[self-deploying ArangoDB in the cloud](../../deploy/in-the-cloud.md).

ArangoDB supports Kubernetes through its official
[Kubernetes Operator](../../deploy/kubernetes.md) that allows you to easily
deploy and manage clusters within a Kubernetes environment.

### On-premises

Running ArangoDB on-premises means that ArangoDB is installed locally, on your
organization's computers and servers, and involves managing all the necessary
resources within the organization's environment, rather than using external
services.

You can install ArangoDB locally by downloading and running the
[official packages](https://arangodb.com/download/) or run it using
[Docker images](../../operations/installation/docker.md).

You can deploy it on-premises as a
[single server](../../deploy/single-instance/_index.md)
or as a [cluster](../../deploy/cluster/_index.md)
comprised of multiple nodes with synchronous replication and automatic failover
for high availability and resilience. For the highest level of data safety,
you can additionally set up off-site replication for your entire cluster
([Datacenter-to-Datacenter Replication](../../deploy/arangosync/_index.md)).

ArangoDB also integrates with Kubernetes, offering a
[Kubernetes Operator](../../deploy/kubernetes.md) that lets you deploy in your
Kubernetes cluster.

## ArangoDB Editions

### Community Edition

ArangoDB is freely available in a **Community Edition** under the Apache 2.0
open-source license. It is a fully-featured version without time or size
restrictions and includes cluster support.

- Open source under a permissive license
- One database core for all graph, document, key-value, and search needs
- A single composable query language for all data models
- Extensible through microservices with custom REST APIs and user-definable
query functions
- Cluster deployments for high availability and resilience

See all [Community Edition Features](community-edition.md).

### Enterprise Edition

ArangoDB is also available in a commercial version, called the
**Enterprise Edition**. It includes additional features for performance and
security, such as for scaling graphs and managing your data safely.

- Includes all Community Edition features
- Performance options to smartly shard and replicate graphs and datasets for
optimal data locality
- Multi-tenant deployment option for the transactional guarantees and
performance of a single server
- Enhanced data security with on-disk and backup encryption, key rotation,
audit logging, and LDAP authentication
- Incremental backups without downtime and off-site replication

See all [Enterprise Edition Features](enterprise-edition.md).

### Differences between the Editions

| Community Edition | Enterprise Edition |
|-------------------|--------------------|
| Apache 2.0 License | Commercial License |
| Sharding using consistent hashing on the default or custom shard keys | In addition, **smart sharding** for improved data locality |
| Only hash-based graph sharding | **SmartGraphs** to intelligently shard large graph datasets and **EnterpriseGraphs** with an automatic sharding key selection |
| Only regular collection replication without data locality optimizations | **SatelliteCollections** to replicate collections on all cluster nodes and data locality optimizations for queries |
| No optimizations when querying sharded graphs and replicated collections together | **SmartGraphs using SatelliteCollections** to enable more local execution of graph queries |
| Only regular graph replication without local execution optimizations | **SatelliteGraphs** to execute graph traversals locally on a cluster node |
| Collections can be sharded alike but joins do not utilize co-location | **SmartJoins** for co-located joins in a cluster using identically sharded collections |
| Graph traversals without parallel execution | **Parallel execution of traversal queries** with many start vertices |
| Graph traversals always load full documents | **Traversal projections** optimize the data loading of AQL traversal queries if only a few document attributes are accessed |
| Iterative graph processing (Pregel) for single servers | **Pregel graph processing for clusters** and single servers |
| Inverted indexes and Views without support for search highlighting and nested search | **Search highlighting** for getting the substring positions of matches and **nested search** for matching arrays with all the conditions met by a single object |
| Only standard Jaccard index calculation | **Jaccard similarity approximation** with MinHash for entity resolution, such as for finding duplicate records, based on how many common elements they have |{{% comment %}} Experimental feature
| No fastText model support | Classification of text tokens and finding similar tokens using supervised **fastText word embedding models** |
{{% /comment %}}
| Only regular cluster deployments | **OneShard** deployment option to store all collections of a database on a single cluster node, to combine the performance of a single server and ACID semantics with a fault-tolerant cluster setup |
| ACID transactions for multi-document / multi-collection queries on single servers, for single document operations in clusters, and for multi-document queries in clusters for collections with a single shard | In addition, ACID transactions for multi-collection queries using the OneShard feature |
| Always read from leader shards in clusters | Optionally allow dirty reads to **read from followers** to scale reads |
| TLS key and certificate rotation | In addition, **key rotation for JWT secrets** and **server name indication** (SNI) |
| Built-in user management and authentication | Additional **LDAP authentication** option |
| Only server logs | **Audit log** of server interactions |
| No on-disk encryption | **Encryption at Rest** with hardware-accelerated on-disk encryption and key rotation |
| Only regular backups | **Datacenter-to-Datacenter Replication** for disaster recovery |
| Only unencrypted backups and basic data masking for backups | **Hot Backups**, **encrypted backups**, and **enhanced data masking** for backups |
Loading