dgraph实现基本操作
简单介绍
dgraph 是一个分布式图数据库
为一个突变, 一般认为添加数据或者是删除数据为一个突变
为一个查询
创建基础数据库
{set {_:wangha"wangha" ._:wangha "17" ._:wangha "China" ._:wangha "wangha" ._:wangha "王哈" ._:wangha "王ハ" ._:wangha _:cyc ._:wangha _:xhe ._:cyc "chenchao" ._:cyc "18" ._:cyc "China" ._:cyc "ChaoChen" ._:cyc "陈超" ._:xhe "xhe" ._:xhe "18" ._:xhe "Japan" ._:xhe "x鹤" ._:cxy "changyang" ._:cxy "19" ._:cxy "England" ._:cxy "常飏" ._:cxy _:ttfq ._:ttfq "yetao" ._:ttfq "18" ._:ttfq "Russian" ._:ttfq "TaoYe" ._:ttfq "叶掏" ._:ttfq _:xhe .}}
看到右边出现Done. 说明添加完成
由于此处, 我使用的是http客户端, 需要自己设置表的一些属性, goClient等可代码实现.
设置在Schema中, 设置如下:
在默认的时候, 各元素都为default, 需要全部自己修改为string类型,并且设置index(索引), 在dgraph中, 只有被设置为索引的元素才可被查询.
查询
dgraph提供了丰富的query语句, 可见
此处我们假设查询有关于username="wangha"的各种信息.
{ aboutme(func:eq(usernameOFen,"wangha")){ uid name usernameOFcn usernameOFen usernameOFjp }}
得到结果如下:
其实还有更加简单的办法, 用于查询信息.
{ aboutme(func:eq(usernameOFen,"wangha")){ expand(_all_) }}
添加节点
此时, 又进入了一位新朋友 yaodao , 我需要将他加入数据库, 而且他存在 < friend > 为 **:wangha** , 那么此时, 我需要首先获得 :wangha 的uid , 随后将其加入数据库
获取wangha的uid
{ wanghauid(func:eq(usernameOFen,"wangha")){ uid }}
得到wangha的uid为 "uid": "0x2"
将新朋友的数据插入
{set {_:yaodao"yaozhao" ._:yaodao "24" ._:yaodao "M78Star" ._:yaodao "ZhaoYao" ._:yaodao "姚X" ._:yaodao "姚飞机" ._:yaodao <0x2> .}}
当然, 可以使用别的方式, 比方说:
- 将yaodao的信息插入
- 获取yaodao的uid
- 插入
<yaodao的uid> <friend> <wangha的uid>
此时, 可以查看yaodao的朋友
{ yaodaofriends(func:eq(name,"yaozhao")){ friend{ uid name usernameOFcn } }}
结果如下:
更新数据
比如此时yaodao的数据有错, age应该为22
查询yaodao的uid
{ yaodaofriends(func:eq(name,"yaozhao")){ uid }}
得到结果: "uid": "0x10"
更新数据
{set {<0x10>"22" .}}
验证看看结果:
没有任何问题.
删除
比如, 此时, yaodao强烈要求我删除他的数据.
所以, 没办法了...
{delete {<0x10> * * .}}
此时, 我再回去query
发现除了uid, 其他所有的数据已经没了