Deploy Dgraph in Minutes

If you're brand new to Dgraph, jump to our Dgraph quick-start guide or GraphQL quick-start guide. We can host Dgraph for you, too.

dgraph 是基于 golang 开发的开源的分布式图数据库. 诞生时间不长, 发展却很迅速. 目前是 v20.x 版本, dgraph 集群主要包含 3 种节点:

  1. Zero: 是集群的核心, 负责调度集群服务器和平衡服务器组之间的数据
  2. Alpha: 保存数据的 谓词 和 索引. 谓词包括数据的 属性 和数据之间的 关系; 索引是为了更快的进行数据的过滤和查找
  3. Ratel: dgraph 的 UI 接口, 可以在此界面上进行数据的 CURD, 也可以修改数据的 schema

通过增加 Alpha 的数量完成 dgraph 的水平扩展.

我是通过docker快速开始使用Dgraph。

通过docker安装dgraph。

sudo docker pull dgraph/dgraph:latest

通过docker compose启动。

(如果没有安装compose,请先安装compose)

compose安装步骤:

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
$ docker-compose --version
cker-compose version 1.24.1, build 4667896b

创建一个测试目录:

$ mkdir composetest
$ cd composetest

在composetest新建docker-compose.yml文件。

其中,docker-compose.yml 文件如下。
 

# This Docker Compose file can be used to quickly bootup Dgraph Zero
# and Alpha in different Docker containers.

# It mounts /tmp/data on the host machine to /dgraph within the
# container. You can change /tmp/data to a more appropriate location.
# Run `docker-compose up` to start Dgraph.

version: "3.2"
services:
  zero:
    image: dgraph/dgraph:latest
    volumes:
      - /data/dgraph:/dgraph
    ports:
      - 5080:5080
      - 6080:6080
    restart: on-failure
    command: dgraph zero --my=zero:5080
  alpha:
    image: dgraph/dgraph:latest
    volumes:
      - /data/dgraph:/dgraph
    ports:
      - 7080:7080
      - 8080:8080
      - 9080:9080
    restart: on-failure
    command: dgraph alpha --whitelist 0.0.0.0/0 --my=alpha:7080  --lru_mb=2048 --zero=zero:5080
  ratel:
    image: dgraph/dgraph:latest
    ports:
      - 8000:8000
    command: dgraph-ratel

其中,

volumes:
      - /data/dgraph:/dgraph  

表示它将主机上的/data/dgraph挂载到/ dgraph容器。数据库存放目录为主机上/data/dgraph。

启动dgraph:

docker-compose up

(注意:修改yml文件之后,用docker-compose stop,先停止dgraph,再执行docker-compose up。这样修改的参数才会写入更新。刚开始用的docker-compose restart,一直有问题,刚开始也没有想到这个重启指令,不会加载更新的参数)

如果没有错误, 可以通过: http://<YOUR IP/Domain>:8000/ 来访问 draph 的 UI 界面。

在如图所示位置,键入http://<YOUR IP/Domain>:8080,连接dgraph 的 UI 接口,可以在此界面上进行数据的 CURD, 也可以修改数据的 schema

写数据库操作如下:(执行写操作,会根据写入数据自动执行创建字段的操作,也可以先创建Schema)

写数据库语句示例:

在数据库中插入unit:

{
  "set": [
    {
      "unit_id": 0,
      "unit_name": "苏州市"
    },
    {
      "unit_id": 1,
      "unit_name": "工业园区"
    },
    {
      "unit_id": 2,
      "unit_name": "昆山市"
    }
  ]
}

 在数据库中插入设备信息,其中设备信息关联组织unit:

{
  "set": [
    {
      "device_id":5,
      "data":"示例",
      "unit": {
        "unit_id":0,
        "unit_name":"苏州市"
      }
    }
  ]
}

查询操作如下:

查询语句示例:

{
  unit(func: has(unit_id)) {
       unit_id,
       unit_name
  }
}

查询关联关系示例:

{
  device(func:ge(device_id,49995)) {
    device_id,
    unit@facets {
       unit_id,
       unit_name,
       dgraph.type
    }
  }
}

 TIP:

在修改Schema的过程中,遇到了一个错误,Could not alter predicate: Error: unauthorized ip address:,根据官网设置了白名单,--whitelist 0.0.0.0/0,然而,这个问题一直存在,一直报这个错误。在解决挂载问题的过程中无意中发现了这个错误就是应该修改白名单,只不过是启动命令使用错误,在修改完白名单这个参数,一直使用的是docker-compose restart重启dgraph导致修改的参数并没有写入更新。修改的内容修改docker-compose.yml 挂载参数volumes,之后,导致程序在执行写入数据库操作的过程中,没有任何报错。无意中发现,修改参数,使用docker-compose restart重启dgraph导致修改的参数并没有写入更新。还是学艺不精,没有使用过compose导致在错误的方向上寻找解决方案。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值