Skip to content
Open
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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 14 additions & 5 deletions _config.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
remote_theme: just-the-docs/just-the-docs
remote_theme: just-the-docs/just-the-docs@v0.10.0
title: FalkorDB Docs
description: The FalkorDB documentation
url: "https://docs.falkordb.com"
logo: "/images/falkor-logo.png"
logo_link: "https://www.falkordb.com"
favicon_ico: "/images/favicon.ico"
Expand All @@ -11,9 +12,9 @@ color_scheme: dark

aux_links:
"Docs Repository":
- "//github.com/falkordb/docs"
- "https://github.com/falkordb/docs"
"FalkorDB Repository":
- "//github.com/falkordb/falkordb"
- "https://github.com/falkordb/falkordb"


# Makes Aux links open in a new tab. Default is false
Expand All @@ -25,10 +26,18 @@ nav_enabled: true
plugins:
- jekyll-sitemap
- jekyll-redirect-from
- jekyll-seo-tag

exclude:
- README.md
- Gemfile
- Gemfile.lock
- node_modules
- vendor

# Footer last edited timestamp
last_edit_timestamp: true
last_edit_time_format: "%b %e %Y at %I:%M %p" # uses ruby's time format: https://ruby-doc.org/stdlib-2.7.0/libdoc/time/rdoc/Time.html
last_edit_timestamp: true
last_edit_time_format: "%b %e %Y at %I:%M %p" # uses ruby's time format: https://ruby-doc.org/core/Time.html

# Footer "Edit this page on GitHub" link text
gh_edit_link: true
Expand Down
20 changes: 19 additions & 1 deletion cloud/features.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,27 @@ FalkorDB persists data through regular snapshots and transaction logs. These mec
## Graph Browser
You can connect to the falkordb browser (integrated into your web browser) from the cloud console. The browser allows visualizing query results, allows you to traverse the graph and more. Multi Graph support is enabled by default in the browser which simplifies navigation and data management.

### Solution Architecture
## Solution Architecture
Solution architecture support helps you design how FalkorDB integrates with your broader application infrastructure. This guidance covers connection patterns, data modeling approaches, and best practices for specific use cases.

Teams building complex systems benefit from architectural advice to avoid common pitfalls and optimize their graph database implementation. Poor architectural decisions early in development create technical debt that becomes expensive to fix later.

Architecture consultations provide recommendations on graph schema design, query optimization strategies, and integration patterns that match your application requirements.

## Graph Access Control
_Documentation pending_

## Cluster Deployment
_Documentation pending_

## High Availability
_Documentation pending_

## Multi-zone Deployment
_Documentation pending_

## Automated Backups
_Documentation pending_

## Advanced Monitoring
_Documentation pending_
2 changes: 1 addition & 1 deletion cloud/free-tier.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ The free tier provides everything you need to explore FalkorDB and build initial
| **Cloud Providers** | AWS, GCP | AWS, GCP | AWS, GCP | AWS, GCP, Azure |
| **Call-to-Action** | [Sign up](https://app.falkordb.cloud/signup) | [Sign up](https://app.falkordb.cloud/signup) | [Sign up](https://app.falkordb.cloud/signup) | [Contact Us](mailto:info@falkordb.com) |

#### Terms
## Terms
> ⚠️ Free instances that aren't utilized for 1 day will be stopped, and deleted after 7 days.
Need an extension? Speak to [sales](https://www.falkordb.com/get-a-demo/)

Expand Down
2 changes: 1 addition & 1 deletion commands/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ has_children: true

## FalkorDB Features

FalkorDB exposes graph database functionality within Redis using the [openCypher](https://opencypher.org/) query language. Its basic commands accept openCypher queries, while additional commands are exposed for configuration or metadata retrieval.
FalkorDB is a graph database that exposes its functionality using the [openCypher](https://opencypher.org/) query language. Its basic commands accept openCypher queries, while additional commands are exposed for configuration or metadata retrieval.

## FalkorDB API

Expand Down
3 changes: 3 additions & 0 deletions cypher/call.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ nav_order: 16
description: >
The CALL {} (subquery) clause allows local execution of subqueries, which opens the door for many comfortable and efficient actions on a graph.
parent: "Cypher Language"
redirect_from:
- /cypher/call.html
- /cypher/call
---

# CALL \{\}
Expand Down
3 changes: 3 additions & 0 deletions cypher/foreach.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ nav_order: 15
description: >
The FOREACH clause feeds the components of a list to a sub-query comprised of updating clauses only
parent: "Cypher Language"
redirect_from:
- /cypher/foreach.html
- /cypher/foreach
---

# FOREACH
Expand Down
3 changes: 3 additions & 0 deletions cypher/limit.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ nav_order: 7
description: >
Can use the limit clause to limit the number of records returned by a query
parent: "Cypher Language"
redirect_from:
- /cypher/limit.html
- /cypher/limit
---

# LIMIT
Expand Down
3 changes: 3 additions & 0 deletions cypher/match.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ nav_order: 1
description: >
Match describes the relationship between queried entities, using ascii art to represent pattern(s) to match against.
parent: "Cypher Language"
redirect_from:
- /cypher/match.html
- /cypher/match
---

# MATCH
Expand Down
3 changes: 3 additions & 0 deletions cypher/merge.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ nav_order: 11
description: >
The MERGE clause ensures that a path exists in the graph (either the path already exists, or it needs to be created).
parent: "Cypher Language"
redirect_from:
- /cypher/merge.html
- /cypher/merge
---

# MERGE
Expand Down
3 changes: 3 additions & 0 deletions cypher/procedures.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ nav_order: 19
description: >
Calling procedures using CALL and YIELD.
parent: "Cypher Language"
redirect_from:
- /cypher/procedures.html
- /cypher/procedures
---

# Procedures
Expand Down
3 changes: 3 additions & 0 deletions cypher/remove.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ description: >
REMOVE is used to remove attributes from node and relationships, in addition to
removing labels from nodes.
parent: "Cypher Language"
redirect_from:
- /cypher/remove.html
- /cypher/remove
---

# REMOVE
Expand Down
3 changes: 3 additions & 0 deletions cypher/set.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ nav_order: 10
description: >
SET is used to create or update properties on nodes and relationships.
parent: "Cypher Language"
redirect_from:
- /cypher/set.html
- /cypher/set
---

# SET
Expand Down
3 changes: 3 additions & 0 deletions cypher/skip.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ nav_order: 6
description: >
The optional skip clause allows a specified number of records to be omitted from the result set.
parent: "Cypher Language"
redirect_from:
- /cypher/skip.html
- /cypher/skip
---

# SKIP
Expand Down
3 changes: 3 additions & 0 deletions cypher/unwind.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ nav_order: 14
description: >
The UNWIND clause breaks down a given list into a sequence of records; each contains a single element in the list.
parent: "Cypher Language"
redirect_from:
- /cypher/unwind.html
- /cypher/unwind
---

# UNWIND
Expand Down
3 changes: 3 additions & 0 deletions cypher/where.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ nav_order: 3
description: >
Optional clause used to filter results based on predicates.
parent: "Cypher Language"
redirect_from:
- /cypher/where.html
- /cypher/where
---

# WHERE
Expand Down
3 changes: 3 additions & 0 deletions cypher/with.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ nav_order: 12
description: >
The WITH clause allows parts of queries to be independently executed and have their results handled uniquely.
parent: "Cypher Language"
redirect_from:
- /cypher/with.html
- /cypher/with
---

# WITH
Expand Down
20 changes: 8 additions & 12 deletions design/client-spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ Instructions on how to efficiently convert these IDs in the [Procedure Calls](#p

Additionally, two enums are exposed:

[ColumnType](https://github.com/FalkorDB/FalkorDB/blob/ff108d7e21061025166a35d29be1a1cb5bac6d55/src/resultset/formatters/resultset_formatter.h#L14-L19), which as of v2.1.0 will always be `COLUMN_SCALAR`. This enum is retained for backwards compatibility, and may be ignored by the client unless versions older than v2.1.0 must be supported.
[ColumnType](https://github.com/FalkorDB/FalkorDB/blob/master/src/resultset/formatters/resultset_formatter.h) enum, which as of v2.1.0 will always be `COLUMN_SCALAR`. This enum is retained for backwards compatibility, and may be ignored by the client unless versions older than v2.1.0 must be supported.

[ValueType](https://github.com/FalkorDB/FalkorDB/blob/ff108d7e21061025166a35d29be1a1cb5bac6d55/src/resultset/formatters/resultset_formatter.h#L21-L28) indicates the data type (such as Node, integer, or string) of each returned value. Each value is emitted as a 2-array, with this enum in the first position and the actual value in the second. Each property on a graph entity also has a scalar as its value, so this construction is nested in each value of the properties array when a column contains a node or relationship.
[ValueType](https://github.com/FalkorDB/FalkorDB/blob/master/src/resultset/formatters/resultset_formatter.h) enum indicates the data type (such as Node, integer, or string) of each returned value. Each value is emitted as a 2-array, with this enum in the first position and the actual value in the second. Each property on a graph entity also has a scalar as its value, so this construction is nested in each value of the properties array when a column contains a node or relationship.

## Decoding the result set

Expand Down Expand Up @@ -155,7 +155,7 @@ Each is emitted as a 2-array:
2) column name (string)
```

The first element is the [ColumnType enum](https://github.com/FalkorDB/FalkorDB/blob/master/src/resultset/formatters/resultset_formatter.h#L14-L19), which as of RedisGraph v2.1.0 will always be `COLUMN_SCALAR`. This element is retained for backwards compatibility, and may be ignored by the client unless RedisGraph versions older than v2.1.0 must be supported.
The first element is the [ColumnType enum](https://github.com/FalkorDB/FalkorDB/blob/master/src/resultset/formatters/resultset_formatter.h), which as of FalkorDB v2.1.0 will always be `COLUMN_SCALAR`. This element is retained for backwards compatibility, and may be ignored by the client unless FalkorDB versions older than v2.1.0 must be supported.

### Reading result rows

Expand Down Expand Up @@ -184,12 +184,12 @@ Our query produced one row of results with 3 columns (as described by the header

Each element is emitted as a 2-array - [`ValueType`, value].

It is the client's responsibility to store the [ValueType enum](https://github.com/FalkorDB/FalkorDB/blob/master/src/resultset/formatters/resultset_formatter.h#L21-L28). FalkorDB guarantees that this enum may be extended in the future, but the existing values will not be altered.
It is the client's responsibility to store the [ValueType enum](https://github.com/FalkorDB/FalkorDB/blob/master/src/resultset/formatters/resultset_formatter.h). FalkorDB guarantees that this enum may be extended in the future, but the existing values will not be altered.

The `ValueType` for the first entry is `VALUE_NODE`. The node representation contains 3 top-level elements:

1. The node's internal ID.
2. An array of all label IDs associated with the node (currently, each node can have either 0 or 1 labels, though this restriction may be lifted in the future).
2. An array of all label IDs associated with the node (nodes can have zero or more labels).
3. An array of all properties the node contains. Properties are represented as 3-arrays - [property key ID, `ValueType`, value].

```sh
Expand Down Expand Up @@ -232,11 +232,11 @@ The final top-level member of the GRAPH.QUERY reply is the execution statistics.
The statistics always include query execution time, while any combination of the other elements may be included depending on how the graph was modified.

1. "Labels added: (integer)"
2. "Labels removed: (integer)" (since RedisGraph 2.10)
2. "Labels removed: (integer)"
3. "Nodes created: (integer)"
4. "Nodes deleted: (integer)"
5. "Properties set: (integer)"
6. "Properties removed: (integer)" (since RedisGraph 2.10)
6. "Properties removed: (integer)"
7. "Relationships created: (integer)"
8. "Relationships deleted: (integer)"
9. "Indices created: (integer)"
Expand Down Expand Up @@ -290,10 +290,6 @@ CALL db.propertyKeys() YIELD propertyKey RETURN propertyKey SKIP [cached_array_l

Though the property calls are quite efficient regardless of whether this optimization is used.

As an example, the Python client checks its local array of labels to resolve every label ID [as seen here](https://github.com/RedisGraph/redisgraph-py/blob/d65ec325b1909489845427b7100dcba6c4050b66/redisgraph/graph.py#L20-L32).

In the case of an IndexError, it issues a procedure call to fully refresh its label cache [as seen here](https://github.com/RedisGraph/redisgraph-py/blob/d65ec325b1909489845427b7100dcba6c4050b66/redisgraph/graph.py#L153-L154).

## Reference clients

All the logic described in this document has been implemented in most of the clients listed in [Client Libraries](clients). Among these, `node-redis`, `redis-py` and `jedis` are currently the most sophisticated.
All the logic described in this document has been implemented in most of the clients listed in [Client Libraries](/getting-started/clients). Among these, the official FalkorDB clients for Python, Node.js, and Java are currently the most sophisticated.
13 changes: 4 additions & 9 deletions design/third-party.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,15 +48,10 @@ Below is a list of these libraries along with their respective licenses.
### 10. [CRoaring](https://github.com/RoaringBitmap/CRoaring?tab=License-1-ov-file#readme)
- **License**: [Apache License 2.0](https://github.com/RoaringBitmap/CRoaring?tab=License-1-ov-file#readme)

### 11. RedisGraph
- **License**: [RSALv2](https://redis.io/legal/rsalv2-agreement/) or [SSPLv1](https://redis.io/legal/server-side-public-license-sspl/)

### 12. Redis
- **License**: [RSALv2](https://redis.io/legal/rsalv2-agreement/) or [SSPLv1](https://redis.io/legal/server-side-public-license-sspl/)

### 13. RediSearch
- **License**: [RSALv2](https://redis.io/legal/rsalv2-agreement/) or [SSPLv1](https://redis.io/legal/server-side-public-license-sspl/)

---

Each of these libraries is crucial for FalkorDB's performance, scalability, and functionality. For further details, consult the respective license files linked above.

## Historical Attribution

FalkorDB is built upon technology originally developed as RedisGraph (licensed under RSALv2/SSPLv1) and Redis (licensed under RSALv2/SSPLv1), and RediSearch (licensed under RSALv2/SSPLv1). FalkorDB continues to evolve these technologies under an open-source model.
2 changes: 2 additions & 0 deletions getting-started/clients.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ FalkorDB provides official Object-Graph Mapping (OGM) libraries that allow you t

## Additional Clients

**Note:** Some clients below were originally developed for RedisGraph. While many may work with FalkorDB due to protocol compatibility, they are not officially tested or supported. For best results, use the official FalkorDB clients listed above.

| Project | Language | License | Author | Package |
| --------------------------------------------------------- | ---------- | ---------- | ------------------------------------------- | ---------------------------------------- |
| [nredisstack][nredisstack-url] | .NET | MIT | [Redis][redis-url] | [nuget][nredisstack-package] |
Expand Down
4 changes: 2 additions & 2 deletions operations/k8s-support.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ replica:
- "--loadmodule /var/lib/falkordb/bin/falkordb.so"
```

This file specify the FalkorDB image(you can choose different tags)
and configure the master and slave to load the FalkorDB module.
This file specifies the FalkorDB image (you can choose different tags)
and configures the master and replicas to load the FalkorDB module.
For additional configurations [see the official Helm chart documentation](https://github.com/bitnami/charts/blob/main/bitnami/redis/values.yaml)

## Step 2: Install FalkorDB Helm Charts
Expand Down
2 changes: 1 addition & 1 deletion operations/migration/kuzu-to-falkordb.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ The process ensures complete data migration including nodes, relationships, prop

## Prerequisites

- Python 3.6+
- Python 3.9+
- `kuzu` Python package
- FalkorDB instance (local, Docker, or Cloud)
- [FalkorDB Rust Loader](https://github.com/FalkorDB/FalkorDB-Loader-RS)
Expand Down
2 changes: 1 addition & 1 deletion operations/migration/neo4j-to-falkordb.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ The migration process consists of the following steps:

- Neo4j instance (local or remote)
- FalkorDB instance (local, Docker, or Cloud)
- Python 3.6+
- Python 3.9+
- Migration tools from the [Neo4j-to-FalkorDB repository](https://github.com/FalkorDB/Neo4j-to-FalkorDB)

## Step 1: Setting Up Neo4j
Expand Down
12 changes: 7 additions & 5 deletions operations/opentelemetry.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,25 @@
title: "OpenTelemetry Integration"
nav_order: 5
parent: Operations
description: "Comprehensive guide for setting up OpenTelemetry observability and tracing with FalkorDB Python applications"
description: "Guide for setting up OpenTelemetry tracing with FalkorDB Python applications"
redirect_from:
- /opentelemetry.html
- /opentelemetry
---

# OpenTelemetry with FalkorDB-py Guide
# OpenTelemetry Tracing with FalkorDB-py Guide

This guide explains how to set up and use OpenTelemetry (OTel) to monitor and trace your FalkorDB Python applications.
This guide explains how to set up and use OpenTelemetry (OTel) tracing to monitor your FalkorDB Python applications.

## Overview

OpenTelemetry is an observability framework that allows you to collect, process, and export telemetry data (metrics, logs, and traces) from your applications. When integrated with FalkorDB-py, it provides valuable insights into database operations, query performance, and application behavior.
OpenTelemetry is an observability framework that allows you to collect, process, and export telemetry data from your applications. When integrated with FalkorDB-py, it provides valuable insights into database operations and query performance through distributed tracing.

**Note:** This guide focuses on tracing capabilities. OpenTelemetry supports additional observability features like metrics and logs that can be configured separately.

## Prerequisites

- Python 3.8 or higher
- Python 3.9 or higher
- FalkorDB server running (locally or remotely)
- Basic understanding of Python and FalkorDB

Expand Down
8 changes: 3 additions & 5 deletions udfs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ function stringify_path(p) {
### Graph
UDFs have access to a global `graph` object which represents the current graph executing the UDF.
The object exposes a single function `traverse` which is similar to the node's `getNeighbors` function (see docs above)
but can perform multi-source traversal.
but can perform multi-source traversal, which can be faster than performing multiple individual calls to getNeighbors.

```javascript
function multi_source_bfs(sources, config) {
Expand All @@ -251,8 +251,6 @@ function multi_source_bfs(sources, config) {
### Falkor
The `falkor` global object represents the FalkorDB database and is used mostly to register UDFs. The object exposes two functions:

Using the multi source traversal can be faster than performing multiple individual calls to getNeighbors.

- `log` - logs a message to the database stdout.
- `register` - exposes a function to the database.

Expand All @@ -272,7 +270,7 @@ falkor.log(msg)
|-----------|------|----------|-------------|
| `message` | string | Yes | message to log |

##### falkor.register
#### falkor.register

##### Description
Register a function to the database
Expand Down Expand Up @@ -392,7 +390,7 @@ load_graph(g)
compute_jaccard_sim(g)
```

The scripts load our two UDF libraries `collection` and `similarity` construct a graph and computes Jaccard similarity between `Alice` and every other node in the graph via the query:
The scripts load our two UDF libraries, `collection` and `similarity`, construct a graph, and compute Jaccard similarity between `Alice` and every other node in the graph via the query:

```bash
MATCH (alice:Person {name: 'Alice'}), (n)
Expand Down
Loading