diff --git a/site/content/3.12/develop/http-api/graphs/named-graphs.md b/site/content/3.12/develop/http-api/graphs/named-graphs.md index b9e4d5b7c9..f4f16a7ba6 100644 --- a/site/content/3.12/develop/http-api/graphs/named-graphs.md +++ b/site/content/3.12/develop/http-api/graphs/named-graphs.md @@ -281,6 +281,8 @@ paths: isSmart: description: | Define if the created graph should be smart. + - Setting the `smartGraphAttribute` options creates a SmartGraph. + - Setting `isSmart` to `true` but no `smartGraphAttribute` creates an EnterpriseGraph. type: boolean isDisjoint: description: | @@ -294,8 +296,8 @@ paths: properties: smartGraphAttribute: description: | - Required if `isSmart` is true. - + Setting this option creates a SmartGraph. + The attribute name that is used to smartly shard the vertices of a graph. Every vertex in this SmartGraph has to have this attribute. Cannot be modified later. diff --git a/site/content/3.12/develop/operational-factors.md b/site/content/3.12/develop/operational-factors.md index da9ead90bb..e914122a76 100644 --- a/site/content/3.12/develop/operational-factors.md +++ b/site/content/3.12/develop/operational-factors.md @@ -222,9 +222,8 @@ a lot of performance on the table. See [_Cluster Sharding_](../deploy/architecture/data-sharding.md) for more information. -### SmartGraphs +### SmartGraphs and EnterpriseGraphs - The SmartGraphs feature enables you to manage graphs at scale. It provides a vast performance benefit for all graphs sharded in an ArangoDB Cluster. @@ -234,8 +233,14 @@ graph into several smaller sub-graphs. Ideally these sub-graphs follow a that only connect vertices in the same subgraph and only have few edges connecting vertices from other subgraphs. -All the usual considerations for sharding keys also apply for smart attributes, -for more information see [SmartGraphs](../graphs/smartgraphs/_index.md) +All the usual considerations for sharding keys also apply for smart attributes. +For more information, see [SmartGraphs](../graphs/smartgraphs/_index.md). + +If there are no clear sub-graphs in the data and you therefore don't have a +SmartGraph attribute for partitioning, consider using EnterpriseGraphs as the +next best option. It distributes the graph data equally but places the incident +edges of a vertex in the same shard as the vertex. This partial data locality is +exploited to speed up graph traversals and path searches. ## Document and Transaction Sizes diff --git a/site/content/3.12/graphs/enterprisegraphs/_index.md b/site/content/3.12/graphs/enterprisegraphs/_index.md index 11d8cdeb1c..eb932e8348 100644 --- a/site/content/3.12/graphs/enterprisegraphs/_index.md +++ b/site/content/3.12/graphs/enterprisegraphs/_index.md @@ -30,6 +30,7 @@ This is known as the `smartGraphAttribute`, a value that is stored in every vert which ensures data co-location of all vertices sharing this attribute and their immediate edges. + EnterpriseGraphs come with a concept of "random sharding", meaning that the sharding key is randomly selected while ensuring that all vertices with the same sharding key and their adjacent edges are co-located on the same servers,