• DQL2.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会创建它们。这种灵活性可能是有益的,但是如果您希望强制您的突变遵循一个给定的模式,还有一些可用的选项,我们将在后面的文章中探讨模式的问题。

  • 相关阅读:
    NYOJ 542 试制品(第五届河南省省赛)
    714-Card Trick
    716-River Crossing
    1248-海岛争霸
    51Nod
    51Nod
    NYOJ_1274_信道安全
    ZZNU 2095 : 我只看看不写题
    前端-HTML标签
    python 17篇 unittest单元测试框架
  • 原文地址:https://www.cnblogs.com/no-celery/p/15655893.html
Copyright © 2020-2023  润新知