Dgraph Zero控制Dgraph群集,将服务器分配给一个组,并在服务器组之间重新平衡数据。
Dgraph服务器托管谓词和索引。
Dgraph Ratel服务于用户界面来运行查询,突变和改变模式。
您至少需要一个Dgraph零点和一个Dgraph服务器才能开始。
这是一个3步教程,让你启动并运行。
这是运行Dgraph的快速入门指南。要进行互动式漫步,请参观游览。
第1步:安装DgraphDgraph可以从安装脚本安装,或通过Docker运行。
从Docker图像从这里拉出Dgraph Docker图像。从终端:
docker pull dgraph/dgraph
复制
从安装脚本(Linux / Mac)
安装二进制文件
curl https://get.dgraph.io -sSf | bash
复制
该脚本自动安装Dgraph。完成后,直接跳到步骤2。
备选方案:为了减轻潜在的安全风险,请尝试:
curl https://get.dgraph.io > /tmp/get.sh
vim /tmp/get.sh # Inspect the script
sh /tmp/get.sh # Execute the script
复制
您可以通过运行dgraph
并查看其输出(包括版本号)来检查Dgraph二进制文件是否正确安装。
v0.8.3
。
如果您希望在Windows上安装二进制文件,您可以从Github版本中获取它们,手动提取并安装它们。该文件dgraph-windows-amd64-v1.x.y.tar.gz
包含dgraph二进制文件。
使Dgraph启动并运行的最简单方法是使用Docker Compose。如果您还没有安装Docker Compose,请按照此处的说明 安装。
version: "3.2"
services:
zero:
image: dgraph/dgraph:latest
volumes:
- type: volume
source: dgraph
target: /dgraph
volume:
nocopy: true
ports:
- 5080:5080
- 6080:6080
restart: on-failure
command: dgraph zero --my=zero:5080
server:
image: dgraph/dgraph:latest
volumes:
- type: volume
source: dgraph
target: /dgraph
volume:
nocopy: true
ports:
- 8080:8080
- 9080:9080
restart: on-failure
command: dgraph server --my=server:7080 --lru_mb=2048 --zero=zero:5080
ratel:
image: dgraph/dgraph:latest
volumes:
- type: volume
source: dgraph
target: /dgraph
volume:
nocopy: true
ports:
- 8000:8000
command: dgraph-ratel
volumes:
dgraph:
复制
将上面代码片段的内容保存到一个名为的文件中docker-compose.yml
,然后从包含该文件的文件夹中运行以下命令。
docker-compose up -d
复制
这将启动Dgraph服务器,零和Ratel。您可以使用检查日志docker-compose logs
运行Dgraph zero
运行dgraph zero
以开始Dgraph零。此过程控制Dgraph群集,维护成员资格信息,分片分配和分片移动等。
dgraph zero
复制
运行Dgraph数据服务器
运行dgraph server
以启动Dgraph服务器。
dgraph server --lru_mb 2048 --zero localhost:5080
复制
运行Ratel
运行'dgraph-ratel'启动Dgraph UI。这可以用来通过UI进行变异和查询。
dgraph-ratel
复制
lru_mb
标志的估计内存。这只是Dgraph服务器的一个提示,实际使用率会高于此值。建议将lru_mb设置为可用RAM的三分之一。
# Directory to store data in. This would be passed to `-v` flag.
mkdir -p /tmp/data
# Run Dgraph Zero
docker run -it -p 5080:5080 -p 6080:6080 -p 8080:8080 -p 9080:9080 -p 8000:8000 -v /tmp/data:/dgraph --name diggy dgraph/dgraph dgraph zero
# Run Dgraph Server
docker exec -it diggy dgraph server --lru_mb 2048 --zero localhost:5080
# Run Dgraph Ratel
docker exec -it diggy dgraph-ratel
复制
dgraph服务器在端口8080和9080上侦听输出到终端的日志。
Docker在非Linux发行版上。使用docker时,安装的文件系统中的文件访问速度较慢。尝试time dd if=/dev/zero of=test.dat bs=1024 count=100000
在安装的卷上运行命令,您会发现使用安装的卷时速度非常慢。我们建议用户使用docker数据卷。使用数据卷唯一的缺点是你无法从主机访问文件,你必须启动一个容器来访问它。
用dgraph / dgraph图像创建一个名为data的docker 数据容器。
docker create -v /dgraph --name data dgraph/dgraph
复制
现在,如果我们使用--volumes-from
标志运行Dgraph容器并使用以下命令运行Dgraph,那么我们写入Dgraph容器中的/ dgraph的任何内容都将写入到datacontainer的/ dgraph卷中。
docker run -it -p 5080:5080 -p 6080:6080 --volumes-from data --name diggy dgraph/dgraph dgraph zero
docker exec -it diggy dgraph server --lru_mb 2048 --zero localhost:5080
# Run Dgraph Ratel
docker exec -it diggy dgraph-ratel
复制
如果您使用的是Dgraph v1.0.2(或更早的版本),则默认端口为7080,8080为零,因此当按照不同设置指南的说明覆盖零端口使用时--port_offset
。
dgraph zero --lru_mb=<typically one-third the RAM> --port_offset -2000
复制
Ratel的默认端口是8081,因此使用-p 8000覆盖它。
一旦Dgraph运行,您可以访问Ratel http://localhost:8000
。它允许基于浏览器的查询,突变和可视化。
以下突变和查询可以使用命令行运行,也可以curl localhost:8080/query -XPOST -d $'...'
通过将两者之间的所有内容粘贴'
到localhost上的正在运行的用户界面中运行。
该数据集是一个电影图形,其中图形节点是类型导演,演员,流派或电影的实体。
将数据存储在图中更改存储在Dgraph中的数据是一种变化。以下突变存储有关“星球大战”系列的前三个版本和“星际迷航”电影之一的信息。通过用户界面或命令行运行此突变,将数据存储在Dgraph中。
curl localhost:8080/mutate -H "X-Dgraph-CommitNow: true" -XPOST -d $'
{
set {
_:luke <name> "Luke Skywalker" .
_:leia <name> "Princess Leia" .
_:han <name> "Han Solo" .
_:lucas <name> "George Lucas" .
_:irvin <name> "Irvin Kernshner" .
_:richard <name> "Richard Marquand" .
_:sw1 <name> "Star Wars: Episode IV - A New Hope" .
_:sw1 <release_date> "1977-05-25" .
_:sw1 <revenue> "775000000" .
_:sw1 <running_time> "121" .
_:sw1 <starring> _:luke .
_:sw1 <starring> _:leia .
_:sw1 <starring> _:han .
_:sw1 <director> _:lucas .
_:sw2 <name> "Star Wars: Episode V - The Empire Strikes Back" .
_:sw2 <release_date> "1980-05-21" .
_:sw2 <revenue> "534000000" .
_:sw2 <running_time> "124" .
_:sw2 <starring> _:luke .
_:sw2 <starring> _:leia .
_:sw2 <starring> _:han .
_:sw2 <director> _:irvin .
_:sw3 <name> "Star Wars: Episode VI - Return of the Jedi" .
_:sw3 <release_date> "1983-05-25" .
_:sw3 <revenue> "572000000" .
_:sw3 <running_time> "131" .
_:sw3 <starring> _:luke .
_:sw3 <starring> _:leia .
_:sw3 <starring> _:han .
_:sw3 <director> _:richard .
_:st1 <name> "Star Trek: The Motion Picture" .
_:st1 <release_date> "1979-12-07" .
_:st1 <revenue> "139000000" .
_:st1 <running_time> "132" .
}
}
' | python -m json.tool | less
复制
更改模式以在某些数据上添加索引,以便查询可以使用术语匹配,过滤和排序。
curl localhost:8080/alter -XPOST -d $'
name: string @index(term) .
release_date: datetime @index(year) .
revenue: float .
running_time: int .
' | python -m json.tool | less
复制
获取所有电影
运行此查询以获取所有电影。该查询适用于所有电影的主角
curl localhost:8080/query -XPOST -d $'
{
me(func: has(starring)) {
name@en
}
}
' | python -m json.tool | less
复制
获取“1980”后发布的所有电影
运行此查询以获得“1980”后发布的“星球大战”电影。在用户界面中尝试一下,以图形的形式查看结果。
curl localhost:8080/query -XPOST -d $'
{
me(func:allofterms(name, "Star Wars")) @filter(ge(release_date, "1980")) {
name
release_date
revenue
running_time
director {
name
}
starring {
name
}
}
}
' | python -m json.tool | less
复制
产量
{
"data":{
"me":[
{
"name":"Star Wars: Episode V - The Empire Strikes Back",
"release_date":"1980-05-21T00:00:00Z",
"revenue":534000000.0,
"running_time":124,
"director":[
{
"name":"Irvin Kernshner"
}
],
"starring":[
{
"name":"Han Solo"
},
{
"name":"Luke Skywalker"
},
{
"name":"Princess Leia"
}
]
},
{
"name":"Star Wars: Episode VI - Return of the Jedi",
"release_date":"1983-05-25T00:00:00Z",
"revenue":572000000.0,
"running_time":131,
"director":[
{
"name":"Richard Marquand"
}
],
"starring":[
{
"name":"Han Solo"
},
{
"name":"Luke Skywalker"
},
{
"name":"Princess Leia"
}
]
}
]
}
}
复制
而已!在这三个步骤中,我们设置了Dgraph,添加了一些数据,设置了一个模式并将数据查询回来。
下一步移除diggy容器并再次尝试docker run命令。
docker rm diggy