图数据库中的属性是一个键值对,用于将数据直接存储在节点(实体)或关系(实体之间的连接)上。与关系数据库不同,后者将数据存储在固定的表列中,图数据库允许将属性灵活地附加到各个节点或关系。例如,表示个人的节点可能具有诸如 name: "Alice"
、age: 30
或 email: "alice@example.com"
之类的属性。 同样,两个人员节点之间的关系(例如 FRIENDS_WITH
)可以包括诸如 since: 2020
之类的属性。 属性提供有关实体及其连接的上下文和详细信息,从而实现更丰富的查询和更精确的数据建模。
图数据库使用属性来支持模式灵活性。 虽然关系数据库需要预定义的列,但图数据库允许相同类型的节点或关系具有不同的属性。 例如,Product
节点可能具有 price
和 category
属性,而同一数据库中的另一个 Product
节点可以包括额外的 discount
属性,而无需进行结构更改。 这种灵活性对于具有异构属性的不断发展的应用程序或数据集非常有用。 还可以为属性建立索引以加快查找速度。 例如,为 Person
节点上的 email
属性建立索引可以快速搜索具有对应电子邮件地址的用户,类似于关系表中的主键。
关系上的属性增加了对连接的解释深度。 User
和 Product
节点之间的 PURCHASED
关系可能包括 date: "2023-10-05"
和 quantity: 2
,从而将简单的连接转变为具有元数据的有意义的事件。 这与关系数据库形成对比,在关系数据库中,此类详细信息将需要单独的连接表。 属性还可以实现有效的遍历和过滤。 例如,查询“过去一周购买过产品的用户”可以直接使用关系的 date
属性过滤关系,从而避免复杂的连接。 通过组合节点和关系上的属性,图数据库可以使用清晰度来建模复杂的现实场景,使其非常适合社交网络、推荐引擎或欺诈检测系统。