# Graph Concepts

This section contains information about concepts to consider when making graphs in Macrometa.

## 📄️ Graph Data Model Components

This page discusses the basic components of a graph data model, including edges and their attributes, as well as the concept of document handles.

## 📄️ GDN Graphs vs. Relational Databases

This page discusses how graphs are represented and managed in relational databases compared to Macrometa GDN, focusing on concepts such as vertex collections, traversal, edge index, and edge attributes.

## 📄️ Edge Traversal Strategies

When working with graph collections, you might need to traverse edges of a particular type. Two primary approaches can help you accomplish this.

## 📄️ Vertices and Edges

This page discusses best practices for determining what data should be stored in edges and vertices in Macrometa graphs.

## 📄️ Named Graphs and Collection Sets

In Macrometa Global Data Network (GDN), you can work with graphs using either named graphs or collection sets, depending on your needs and preferences. Both approaches offer different levels of convenience and flexibility when managing and querying graph data.

## 📄️ Depth-first and Breadth-first Traversals

Depth-first traversal (DFT) and breadth-first traversal (BFT) are two common strategies for exploring and navigating a graph, both used to visit all the vertices and edges of a graph in a systematic manner. Each traversal method has its specific use cases and characteristics.

## 📄️ Pattern-matching and Graphs

If you traverse a graph to find paths fulfilling complex conditions, that kind of search is called pattern matching.

## 📄️ Optimizing Graphs with Indexing

Indexing is a technique that enhances query performance by providing an efficient way to access data in the database. In the context of graph queries, indexing can considerably improve traversals, searches, and other operations involving vertices and edges. Indexes allow the database to quickly locate relevant data without scanning the entire collection.

## 📄️ Weights in Graphs

In the context of graph databases, weights are values assigned to edges that represent the "cost" or "importance" of traversing that edge. The weight can represent any domain-specific value, such as distance, time, cost, or similarity. When you use weights in graph queries, you take these values into account when finding paths or traversals, enabling you to find paths that minimize or maximize the sum of the weights along the path.