DQL-2.1.开始使用Dgraph-介绍

翻译自:这里

Dgraph是一个开源的、事务性的、分布式的、原生的图形数据库。这里是关于使用Dgraph的入门系列的第一个教程。

在本教程中,我们将学习如何在Dgraph上构建以下图形,

在这个过程中,我们将了解到:

  • 使用dgraph/standalone docker镜像运行Dgraph。
  • 使用Dgraph的UI Ratel运行基本操作
  • 创建一个节点。
  • 在两个节点之间创建一条边。
  • 查询节点信息。

运行Dgraph

运行dgraph/standalone docker映像是开始使用dgraph的最快方法。这个独立映像仅用于快速启动。不推荐用于生产环境。

现在,只需运行下面的命令,Dgraph就已经启动并运行了。

docker run --rm -it -p 8000:8000 -p 8080:8080 -p 9080:9080 dgraph/standalone:v21.03.2

节点和边

在本节中,我们将构建一个包含两个节点和一条连接它们的边的简单图。

在图数据库中,概念或实体表示为节点。它可以是一个销售,一个交易,一个地方,或一个人,所有这些实体都表示为图数据库中的节点。

边表示两个节点之间的关系。上图中的两个节点代表人:Karthic和Jessica。您还可以看到这些节点有两个相关属性:name和age。这些节点的属性在Dgraph中称为谓词

Karthic跟随(指向)Jessica。follows边在他们之间代表他们的关系。连接两个节点的边在Dgraph中也称为谓词,尽管它指向另一个节点,而不是字符串或整数等值。

dgraph/standalone 镜像设置附带了有用的dgraph UI Ratel。只需从浏览器访问http://localhost:8000,您就可以访问它。

我们将使用最新的Ratel稳定版(Latest)。

使用Ratel执行突变

Dgraph中的创建、更新和删除操作称为突变。

Ratel使运行查询和突变变得更容易。我们将在教程系列中探索它的更多特性。

让我们转到“Mutate”选项卡(Query右边),并将以下突变粘贴到文本区域。现在不要执行它!

{
  "set": [
    {
      "name": "Karthic",
      "age": 28
    },
    {
      "name": "Jessica",
      "age": 31
    }
  ]
}

上面的突变语句创建了两个节点,对应于与“set”关联的每个JSON值。然而,它并没有在这些节点之间创建一条边。

对突变的语句进行一个小修改就能改变它,所以它在它们之间创造了一条边。

{
  "set": [
    {
      "name": "Karthic",
      "age": 28,
      "follows": {
        "name": "Jessica",
        "age": 31
      }
    }
  ]
}

让我们来执行这个突变。点击Run

您可以在右边的响应中看到已经创建了两个uid(通用标识符)。响应的“uid”字段中的两个值对应于为“Karthic”和“Jessica”创建的两个节点。

使用has函数进行查询

现在,让我们运行一个查询来可视化刚才创建的节点。我们将使用Dgraph的has函数。表达式has(name)返回所有具有谓词名的节点。

{
  people(func: has(name)) {
    name
    age
  }
}

这次转到Query选项卡并粘贴上面的查询。然后,单击屏幕右上角的Run。

Ratel呈现结果的图形可视化。

只要点击其中任何一个,注意到节点被分配了uid,与我们在刚才突变响应中看到的相匹配。

您也可以在右侧的JSON选项卡中查看JSON结果。

理解上面的查询

查询的第一部分是用户定义的函数名。在我们的查询中,我们将其命名为people。但是,您可以使用任何其他名称。

func参数必须与Dgraph的内置函数相关联绑定。Dgraph提供了多种内置函数。has是其中之一。查看查询语言指南,了解Dgraph中其他内置函数的更多信息。

查询的内部字段类似于SQL选择语句或GraphQL查询中的列名!

您可以轻松地指定希望返回的谓词。

{
  people(func: has(name)) {
    name
  }
}

类似地,您可以使用has函数查找带有age谓词的所有节点。

{
  people(func: has(age)) {
    name
  }
}

灵活的模式

Dgraph不执行结构或模式。相反,您可以立即开始输入数据并根据需要添加约束。

让我们来看看这个突变。

{
  "set": [
    {
      "name": "Balaji",
      "age": 23,
      "country": "India"
    },
    {
      "name": "Daniel",
      "age": 25,
      "city": "San Diego"
    }
  ]
}

我们创建了两个节点,第一个节点有谓词name、age和country,第二个节点有name、age和city。

最初并不需要模式。当新的谓词出现在您的突变中时,Dgraph会创建它们。这种灵活性可能是有益的,但是如果您希望强制您的突变遵循一个给定的模式,还有一些可用的选项,我们将在后面的文章中探讨模式的问题。

posted @ 2021-12-07 14:14  KILLNPE  阅读(691)  评论(0编辑  收藏  举报