Dgraph 术语表
先理解这些概念
Alpha
Dgraph 集群由 Zero 节点和 Alpha 节点组成。Alpha 节点负责存储关系(也称为谓词)和索引。通过添加更多的 Alpha 节点,Dgraph 可以水平扩展。
Badger
Badger 是一个快速的开源键值数据库,使用纯 Go 编写,提供 Dgraph 的存储层。更多信息请参见 Badger 文档。
DQL
Dgraph 查询语言(DQL)是 Dgraph 的专有语言,用于插入、更新、删除和查询数据。它基于 GraphQL,但更具表达力。(另见:GraphQL)
Edge(边)
在图的概念中,节点通过边连接;节点是信息的实体,边是节点之间的关系。在 Dgraph 中,边代表关系,即描述两个节点之间关系的信息。
Facet(特性)
特性表示关系的属性。
Graph(图)
图是一种简单的结构,用于映射对象之间的关系。在 Dgraph 中,对象是节点,连接它们的关系是边。
GraphQL
GraphQL 是一种用于查询数据的声明性语言,应用程序开发者通过 GraphQL API 获取所需数据。GraphQL 是一个开放标准,拥有强大的生态系统。Dgraph 支持 GraphQL 数据模型的部署(GraphQL 模式),并自动暴露一个接受 GraphQL 查询的 API 端点。
gRPC
gRPC 是一个高性能的远程过程调用(RPC)框架,Dgraph 使用它与客户端进行交互。Dgraph 提供了 Go、C#、Java、JavaScript 和 Python 的官方 gRPC 客户端。使用这些语言编写的应用程序可以在事务中执行变更和查询。
Lambda
Lambda 解析器(简称 Lambda)是 Dgraph 中支持的 GraphQL 解析器。Lambda 是用户定义的 JavaScript 函数,用于对 GraphQL 类型、接口、查询和变更执行自定义操作。Dgraph 的 Lambda 与 AWS Lambda 无关。
Mutation(变更)
变更是对数据库的修改请求。变更包括插入、更新或删除操作。变更可以与查询结合形成 Upsert 操作。
Node(节点)
从概念上讲,节点是“一个事物”或业务领域中的对象。对于每个节点,Dgraph 存储并维护一个通用标识符 UID、一系列属性,以及该节点与其他节点的关系。
“节点”一词也用于软件架构中,指在集群中运行 Dgraph 模块的物理计算机或虚拟机。参考 Alpha 节点和 Zero 节点。
Predicate(谓词)
在 RDF 术语中,谓词是关于对象的最小信息单元。谓词可以持有字面值或描述与另一个实体的关系:
- 当我们存储一个实体的名称为“Alice”时,谓词是
name
,谓词值是字符串“Alice”。 - 当我们存储 Alice 认识 Bob 时,可以使用谓词
knows
,其值为表示 Bob 的节点的 UID。在这种情况下,knows
是一种关系。
RATEL
Ratel 是一个开源 GUI 工具,用于数据可视化和集群管理,旨在与 Dgraph 和 DQL 配合使用。另见:Ratel 概述。
RDF
RDF 1.1 是一种用于数据交换的语义网标准。它允许我们对资源进行声明。这些声明的格式简单,采用 <subject> <predicate> <object>
的形式。Dgraph 支持 RDF 格式来创建、导入和导出数据。值得注意的是,Dgraph 也支持 JSON 格式。
Relationship(关系)
关系是将一个节点与另一个节点关联的命名、有向链接。在 Dgraph 中,关系类似于边和谓词。关系本身也可以具有表示关于该关系的信息的属性,如权重、成本、时间框架或类型。在 Dgraph 中,关系的属性称为特性(facets)。
Sharding(分片)
分片是一种数据库架构模式,通过在多个服务器之间分配数据来实现水平扩展。Dgraph 按关系对数据进行分片,因此所有属于一个关系的数据形成一个单一的分片,并存储在一个(组)服务器上,这种方法称为“基于谓词的分片”。
Triple(三元组)
由于 RDF 语句由三个元素组成,因此称为三元组。三元组表示关于节点的单个原子声明。RDF 三元组中的对象可以是字面值,也可以指向另一个节点。有关更多详细信息,请参见 DQL RDF 语法。
- 当我们存储一个节点的名称为“Alice”时,谓词是
name
,谓词值是字符串“Alice”。 - 当我们存储 Alice 认识 Bob 时,可以使用谓词
knows
,其值为表示 Bob 的节点的 UID。在这种情况下,knows
是一种关系。
UID
UID 是节点的通用标识符。uid
是一个保留属性,存储每个节点的 UID 值。UID 可以在创建节点时由 Dgraph 自动生成,也可以显式设置。
Upsert
Upsert 操作将查询与变更结合在一起。通常,首先搜索一个节点,然后根据是否找到该节点,创建一个新节点并关联谓词,或者更新现有节点的关系。Upsert 操作对于实现谓词的唯一性非常重要。
Zero
Dgraph 由 Zero 节点和 Alpha 节点组成。Zero 节点控制 Dgraph 数据库集群,负责将 Alpha 节点分配到组中,重新平衡组之间的数据,处理事务时间戳和 UID 分配。