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 with Cypher.
Prerequisites
- FalkorDB Instance: Set up FalkorDB (on-prem or cloud).
- Python Installed: Ensure you have Python 3.8+ installed.
-
Install FalkorDB Python Client:
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
andPost
. - Relationships connect
User
s with aFRIENDS_WITH
relationship, andUser
s are connected via aCREATED
relationship toPost
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 |
Step 2: Load Data into FalkorDB
Here’s how you can model and load the data.
Cypher Query to Create the Data
CREATE (alice:User {id: 1, name: "Alice", email: "alice@example.com"})
CREATE (bob:User {id: 2, name: "Bob", email: "bob@example.com"})
CREATE (charlie:User {id: 3, name: "Charlie", email: "charlie@example.com"})
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
from falkordb import FalkorDB
# Connect to FalkorDB
db = FalkorDB(host="localhost", port=6379, password="your-password")
graph = db.select_graph('social')
Execute Cypher Queries
Create the Graph
create_query = """
CREATE (alice:User {id: 1, name: "Alice", email: "alice@example.com"})
CREATE (bob:User {id: 2, name: "Bob", email: "bob@example.com"})
CREATE (charlie:User {id: 3, name: "Charlie", email: "charlie@example.com"})
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!")
Query the Graph
# Find all friends of Alice
query = """
MATCH (alice:User {name: 'Alice'})-[:FRIENDS_WITH]->(friend)
RETURN friend.name AS Friend
"""
result = graph.ro_query(query).result_set
print("Alice's friends:")
for record in result:
print(record[0])
Query Relationships
# Find posts created by Bob
query = """
MATCH (bob:User {name: 'Bob'})-[:CREATED]->(post:Post)
RETURN post.content AS PostContent
"""
result = graph.ro_query(query).result_set
print("Posts created by Bob:")
for record in result:
print(record[0])
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:
For questions or support, visit our community forums