-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Create getting_started.md --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: danshalev7 <[email protected]> Co-authored-by: Copilot <[email protected]>
- Loading branch information
1 parent
1a07a8b
commit 9fd30bc
Showing
2 changed files
with
159 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,157 @@ | ||
--- | ||
title: "Getting Started" | ||
nav_order: 2 | ||
description: > | ||
Getting Started with FalkorDB Graph Database. | ||
--- | ||
|
||
|
||
# Getting Started with FalkorDB | ||
|
||
This guide will walk you through setting up FalkorDB, modeling a social network as a graph, | ||
and accessing it using the [FalkorDB Python client](/clients) with [Cypher](/cypher). | ||
|
||
--- | ||
|
||
## Prerequisites | ||
|
||
1. **FalkorDB Instance**: Set up FalkorDB (on-prem or cloud). | ||
- [Run FalkorDB Docker](https://hub.docker.com/r/falkordb/falkordb/) | ||
- [Create a FalkorDB Cloud Instance](https://app.falkordb.cloud/signup) | ||
2. **Python Installed**: Ensure you have Python 3.8+ installed. | ||
3. **Install FalkorDB Python Client**: | ||
|
||
```bash | ||
pip install falkordb | ||
``` | ||
|
||
--- | ||
|
||
## Step 1: Model a Social Network as a Graph | ||
|
||
Let's create a simple graph for a social network where: | ||
- **Nodes** represent `User` and `Post`. | ||
- **Relationships** connect `User`s with a `FRIENDS_WITH` relationship, and `User`s are connected via a `CREATED` relationship to `Post`s | ||
|
||
### Graph Schema | ||
|
||
| Node Type | Properties | | ||
|-----------|--------------------------| | ||
| User | `id`, `name`, `email` | | ||
| Post | `id`, `content`, `date` | | ||
|
||
| Relationship Type | Start Node | End Node | Properties | | ||
|-------------------|------------|----------|--------------| | ||
| FRIENDS_WITH | User | User | `since` | | ||
| CREATED | User | Post | `time` | | ||
|
||
![FalkorDB-Model a Social Network as a Graph](https://github.com/user-attachments/assets/57d9b837-661e-4500-a9f2-88e754382d29) | ||
|
||
--- | ||
|
||
## Step 2: Load Data into FalkorDB | ||
|
||
Here’s how you can model and load the data. | ||
|
||
### Cypher Query to Create the Data | ||
|
||
```cypher | ||
CREATE (alice:User {id: 1, name: "Alice", email: "[email protected]"}) | ||
CREATE (bob:User {id: 2, name: "Bob", email: "[email protected]"}) | ||
CREATE (charlie:User {id: 3, name: "Charlie", email: "[email protected]"}) | ||
CREATE (post1:Post {id: 101, content: "Hello World!", date: 1701388800}) | ||
CREATE (post2:Post {id: 102, content: "Graph Databases are awesome!", date: 1701475200}) | ||
CREATE (alice)-[:FRIENDS_WITH {since: 1640995200}]->(bob) | ||
CREATE (bob)-[:FRIENDS_WITH {since: 1684108800}]->(charlie) | ||
CREATE (alice)-[:CREATED {time: 1701388800}]->(post1) | ||
CREATE (bob)-[:CREATED {time: 1701475200}]->(post2) | ||
``` | ||
|
||
You can execute these commands using the FalkorDB Python client. | ||
|
||
--- | ||
|
||
## Step 3: Access Your Data | ||
|
||
### Connect to FalkorDB | ||
|
||
```python | ||
from falkordb import FalkorDB | ||
|
||
# Connect to FalkorDB | ||
client = FalkorDB(host="localhost", port=6379, password="your-password") | ||
graph = client.select_graph('social') | ||
``` | ||
|
||
### Execute Cypher Queries | ||
|
||
#### Create the Graph | ||
|
||
```python | ||
create_query = """ | ||
CREATE (alice:User {id: 1, name: "Alice", email: "[email protected]"}) | ||
CREATE (bob:User {id: 2, name: "Bob", email: "[email protected]"}) | ||
CREATE (charlie:User {id: 3, name: "Charlie", email: "[email protected]"}) | ||
CREATE (post1:Post {id: 101, content: "Hello World!", date: 1701388800}) | ||
CREATE (post2:Post {id: 102, content: "Graph Databases are awesome!", date: 1701475200}) | ||
CREATE (alice)-[:FRIENDS_WITH {since: 1640995200}]->(bob) | ||
CREATE (bob)-[:FRIENDS_WITH {since: 1684108800}]->(charlie) | ||
CREATE (alice)-[:CREATED {time: 1701388800}]->(post1) | ||
CREATE (bob)-[:CREATED {time: 1701475200}]->(post2) | ||
""" | ||
|
||
graph.query(create_query) | ||
print("Graph created successfully!") | ||
``` | ||
|
||
![image](https://github.com/user-attachments/assets/f67c9a1d-4b80-435d-9038-b7e1f931da74) | ||
|
||
#### Query the Graph | ||
|
||
```python | ||
# Find all friends of Alice | ||
query = """ | ||
date and time as they are right now can be confusing, either use Python to create timestamps from actual dates or consider changing the attribute to something else which doesn't require time / date datatype | ||
MATCH (alice:User {name: "Alice"})-[:FRIENDS_WITH]->(friend) | ||
RETURN friend.name AS Friend | ||
""" | ||
result = graph.ro_query(query) | ||
|
||
print("Alice's friends:") | ||
for record in result: | ||
print(record["Friend"]) | ||
``` | ||
|
||
#### Query Relationships | ||
|
||
```python | ||
# Find posts created by Bob | ||
query = """ | ||
MATCH (bob:User {name: "Bob"})-[:CREATED]->(post:Post) | ||
RETURN post.content AS PostContent | ||
""" | ||
result = graph.ro_query(query) | ||
|
||
print("Posts created by Bob:") | ||
for record in result: | ||
print(record["PostContent"]) | ||
``` | ||
|
||
--- | ||
|
||
## Step 4: Explore Further | ||
|
||
Congratulations! 🎉 You have successfully modeled, loaded, and queried a social network graph with FalkorDB. | ||
|
||
Next, dive deeper into FalkorDB's powerful features: | ||
- [Advanced Cypher](/cypher) | ||
- [Database Operations](/operations) | ||
- [Integration with ML Workflows](/llm_support) | ||
|
||
For questions or support, visit our [community forums](https://www.falkordb.com/contact-us/) |