试一试dgraph

在github上下载了0.7.7版本的tar包dgraph-linux-amd64-v0.7.7.tar.gz。我是在ubuntu16.04下试的。解压后可以运行,但是在浏览器里输入localhost:8080看不到页面。 在ubuntu14.04和ubuntu12.04下不能运行。

没办法拉一个docker试试吧。直接拉很慢,还是配置一下daocloud的镜像源吧。
如果你跟我一样,用的是ubuntu16.04。请参考这篇文章ubuntu16.04设置daocloud镜像源。因为daocloud官网没有说在ubunt16.04上怎么配置镜像源。

设置好并且重启docker服务之后。
sudo docker pull dgraph/dgraph:v0.7.7
目前github上release最新的版本就是v0.7.7。docker里已经有1.0版本了,docker竟然比github新,出乎意料。
拉完了之后 sudo docker images看一下。

然后mkdir -p ~/dgraph

sudo docker run -it -p 9090:8080 -v ~/dgraph:/dgraph --name dgraph dgraph/dgraph:v0.7.7 dgraph --bindall=true

-p 9090:8080 意思是把容器里8080端口映射到主机的9090端口上。
-v ~/dgraph:/dgraph是映射数据卷。将来dgraph的数据和日志都会写到主机的~/dgraph/目录下
–name dgraph是给容器起一个名字叫dgraph
dgraph/dgraph:v0.7.7 意思是从这个镜像启动一个容器
dgraph是容器起来后运行的命令。我们知道启动dgraph的命令就是 dgraph
–bindall=true 不知道什么意思。猜测是绑定 0.0.0.0到8080

这样dgraph的环境就搭好了。有docker就是好啊。
浏览器输入http://192.168.x.x:9090 看到如下画面:

哎哟乍一看很像neo4j的画面哦。 画面也比cayley好看一些。 cayley的页面太简陋了。
输入框里输入:

mutation {
  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" .
  }
}

点击“Run”

再输入如下内容,添加schema:

mutation {
  schema {
    name: string @index .
    release_date: date @index .
    revenue: float .
    running_time: int .
  }
}

点击“Run”

现在可以查询了,输入如下内容可以查询名称为星球大战并且在1980年后发行的电影:

{
  me(func:allofterms(name, "Star Wars")) @filter(ge(release_date, "1980")) {
    name
    release_date
    revenue
    running_time
    director {
     name
    }
    starring {
     name
    }
  }
}

哎哟,不错哦,页面挺漂亮的。这小清新的配色比neo4j和cayley好看多了。

咦?才提交了这么一点数据,有这么多边吗?
不像neo4j, dgraph的vertex里没有property这概念。所有的property都是边。

不要觉得这很傻。在stackoverflow上看到有人问如何让vertex的属性支持多值?有不少人都说了,给vertex添加多条边。用这种办法让vertex支持多值。

而且据我所知,添加边和查边的时候比属性快一些。别以为查边很慢,有邻接表和其它的策略,查边是非常快的。要不然图数据的优势怎么体现出来?

虽然直接在vertex里添加属性更直观一些。我相信dgraph这样做一定是考虑了很多因素的。别忘了dgraph比neo4j出来的晚,是有后发优势的。
dgraph是支持分片的。在微博上看到有人说dgraph是通过边来切图的。图数据库分片是个NP完全的问题。目前没有非常好的切图策略。
不管dgraph怎么实现分片的。至少人家是支持分片的。而且是底层设计上就考虑了分片的。

dgraph还有一个问题,就是需要你自己维护主键唯一性。上面的mutation操作中,
_:luke是一个伪id。 dgraph内部会为你生成一个唯一的id。如果你想通过id就能把这个vertex查出来,然后更新之。那么需要你自己去维护id的唯一性。 dgraph的设计理念是尽量保持简单(赞同)。 所以现在的问题是导数据的时候想更新节点可能没那么容易了。 mutation中每一句结尾的 “.”,相当于SQL里的分号。

我想通过全文检索把节点查出来怎么办?dgraph支持fulltext索引,不过很可惜,目前不支持中文。如果它是用java写的,那么我们可以快速的添加一个smartcn或者IK。但是人家使用go语言写的。哪位大神能搞一个go语言的中文分词,在此先行谢过。

时间: 2024-10-03 11:00:35

试一试dgraph的相关文章

w3c-W3school点击试一试后怎么弹出浏览器窗口而不是在原来的窗口打开,如图

问题描述 W3school点击试一试后怎么弹出浏览器窗口而不是在原来的窗口打开,如图 解决方案 ctrl+点击试试 应该够十个字符了吧 解决方案二: 按住ctrl 点鼠标左键默认不就是弹新窗口吗? 解决方案三: 直接鼠标拖动连接到浏览器标签栏(猎豹浏览器,360浏览器等等应该都支持.IE你就别想了.程序员不用IE) 解决方案四: 他那个是连接啊.设置连接target=""_blank""就是在新窗口打开了 http://www.w3school.com.cn/tag

《Oracle PL/SQL必知必会》——1.3 试一试

1.3 试一试 本书中的所有课程都使用工作示例,用以展示SQL语法,它做什么,以及解释它为什么这么做.我强烈建议你试试每个示例,以便自己身体力行地学习Oracle. 注意:你需要Oracle 显然,你需要访问一个Oracle DBMS,以便继续学习后面的内容.在第2章中将准确解释你需要什么,并且介绍几个你可以使用的安装和配置选项.

媒体评余额宝论战:像是跳下改革深水区 试了试水深

中国改革已经进入了深水区,余额宝好像是跳下去试了试水深.目前,这个中国有史以来第一只互联网货币基金,用半年时间在中国拥有了8100万用户,超过了中国股民.近期关于这个货币基金该不该取缔的话题,罕见地连续一周占据百度搜索榜首,支持和反对,针锋相对的文章几乎每天更新.由于金融体制改革将是全国两会上关注的一个重点,余额宝引发的话题愈发引起关注.全国性电视台财经评论员日前批评余额宝是"趴在银行身上的'吸血鬼'"建议取缔,将舆论论战推至高峰.民意很快分野:一些人 认为银行才是"吸血鬼&

c++-为什么这段代码会超时(自己试了试不会啊)?

问题描述 为什么这段代码会超时(自己试了试不会啊)? http://noi.openjudge.cn/ch0302/1748/ #include <stdlib.h> #include<iostream> #include<cmath> #include<string> using namespace std; void returnint(int,int); int main() { int d1 = 1, d2 = 1, mn = 0,source[2]

网络试客“试”出麻烦该找谁?

本报记者 陈泥 通讯员 郭寒 继博客.晒客.拼客.换客之后,网络"试客"早已成为网络消费的又一大主力军.然而记者近日在采访中了解到,由于 "试客"们享用的是"免费午餐",一些"试客"在试用了不适合自己的化妆品而出现皮肤过敏等症状之后,多数选择自认倒霉. "试客"皮肤过敏自认倒霉 去年国庆节期间, 网友小雯看中了网上一款保湿产品的试用装."那个牌子我之前都没听说过,但当时贪图免费,还是申请了试用,谁

试来试去,WIN下最简单的WIN API开发工具,Pelles C就好啦

昨晚试过N个,不是太大,就是不容易和WIN API集成. 今早一试就灵了个.... Pelles C. Pelles C是一款windows下的C IDE,支持调试,且为免费.它有一个高效率的链接器,目前已被广泛采用为各种语言的后台链接器使用LCC作为编译器并且完整支持win32编程,支持任何API调用,包含所有winAPI的库且含有完整 C Runtime Library. /*----------------------------------------------------------

我先试一试发贴

问题描述 好 解决方案 解决方案二:我来试一试接分好解决方案三:该回复于2007-11-18 20:38:00被版主删除解决方案四:试完了能散分了吧lz解决方案五:试下能接到分不?解决方案六:lz试试看把分都给我,我帮你测试一下有没有漏分的情况如果这次没问题的话,下次试试100分解决方案七:楼主,试贴也要给分滴,不然太浪费俺的感情啦,对你的信誉也不好哦

度娘原是“荣迷” 搜索“张国荣”试一试

80后女孩雅君在"张国荣吧"守候着要点亮十年黎明的第一颗"纪念心",没想到,点击刷新后页面整个变成了灰黑色,切换到百度网页搜索,同样是满屏黑白肃穆,点击右侧"纪念哥哥"红心后,静默的屏幕才恢复了色彩,并随即响起张国荣最爱的他自己的一首歌<我>.还有什么比理解更能打动人心?在<我>的歌声里,雅君顷刻泪流满面. 科技并不冰冷,百度用心纪念,灰暗的追思让人温暖 ,记者发现,在贴吧.微博.空间等社交网络和社会化媒体里,百度赢得了一

还在用膜保护iPhone?来试一试这块玻璃吧

超强保护膜要保护手机屏幕不被划痕,似乎一层薄膜就足够了.但是还有一些人为了最求完美的保护效果, 它们决定在iPhone 面上再加一块玻璃屏幕.外设公司Spigen 最新出品了GLAS.t 的玩意,就是这么一个东东.它是一块0.4毫米厚的钢化玻璃,把它贴在你的iPhone 屏幕上,会将其受伤的机率降到最低.同时,它完全不会影响触摸功能.