In a graph database, properties are attached to nodes and edges as key-value pairs, allowing you to store detailed information directly within the graph structure. Nodes represent entities (like users, products, or places) and can have labels (e.g., Person
, Order
) to categorize them. Each node or edge can store multiple properties, similar to columns in a relational table but with more flexibility. For example, a Person
node might have properties like name: "Alice"
, age: 30
, and email: "alice@example.com"
. Edges (also called relationships) connect nodes and describe how they interact, such as a FRIENDS_WITH
relationship between two Person
nodes. These edges can also have properties, like since: 2020
to indicate when the friendship began.
The schema flexibility of graph databases allows properties to vary between nodes or edges of the same type. For instance, one Product
node might have a price
property, while another might include weight
and color
instead. This differs from rigid relational schemas, where every row in a table must adhere to the same columns. Properties are typically stored directly with the node or edge, which optimizes traversal speed. In Neo4j, for example, properties are managed as dynamic records, enabling efficient storage and retrieval. When querying, you can filter or sort results using these properties (e.g., MATCH (p:Person) WHERE p.age > 25 RETURN p
), making them central to query logic.
Developers benefit from this design when modeling real-world scenarios. For example, in a social network, a LIKES
relationship between a User
and a Post
could include a timestamp
property to track when the interaction occurred. In a logistics system, a SHIPPED_TO
edge between a Warehouse
and a Store
might include delivery_date
and weight
. Since properties are decoupled from strict schemas, they adapt well to changing requirements. However, overloading nodes or edges with too many properties can impact performance, so it’s important to balance detail with efficiency. Tools like indexes or composite keys can help optimize queries based on specific properties.
Zilliz Cloud is a managed vector database built on Milvus perfect for building GenAI applications.
Try FreeLike the article? Spread the word